[英]passing special characters from mysqli database to android app using php
[英]Send special characters in JSON from android to PHP
我想將JSON發送到服務器上的PHP文件,它工作正常,除非某些字段包含特殊字符(重音符號,ñ等)。
Java文件:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(uri);
JSONObject json = new JSONObject();
try {
// JSON data:
json.put("id_u", viaje.getID_U());
json.put("id_vo", viaje.getID_VO());
json.put("titulo", viaje.getTitulo());
[...]
JSONArray postjson=new JSONArray();
postjson.put(json);
// Post the data:
httppost.setHeader("json",json.toString());
httppost.getParams().setParameter("jsonpost",postjson);
// Execute HTTP Post Request
System.out.print(json);
HttpResponse response = httpclient.execute(httppost);
PHP文件:
$json = $_SERVER['HTTP_JSON'];
$data = json_decode($json);
$id_u = $data->id_u;
$id_vo = $data->id_vo;
$titulo = $data->titulo;
[...]
例如,如果titulo =“día”,則$ title為空,但是titulo =“ example”是否正常工作。 在發送郵件之前,我不知道如何轉換為utf-8,我嘗試了很多事情,但對我來說卻無濟於事。 任何想法?
編輯:
我可以解決問題。 顯然,問題出在編碼。 我通過在代碼中添加2行來解決:
Java文件:
// Post the data:
httppost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
httppost.setHeader("json",json.toString());
httppost.getParams().setParameter("jsonpost",postjson);
PHP文件:
$json = $_SERVER['HTTP_JSON'];
$cadena = utf8_encode($json);
$data = json_decode($cadena);
謝謝你的幫助! :)
聽起來像是編碼問題。 嘗試像這樣設置編碼:
HttpPost httppost = new HttpPost(builder.getUrl());
httppost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
您還可以像這樣對內容強制使用正確的編碼。 但是這里可能不需要:
// Add your data
httppost.setEntity(new UrlEncodedFormEntity(builder
.getNameValuePairs(), "UTF-8"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.