我存儲了來自世界各地(例如Râşnov)的地名,它正確地存儲在數據庫中,並且在發送到/從php中正確顯示/保存。而當發送到Android它正確顯示,但是當我嘗試通過從Android發送任何重音字符(和其他一些)到數據庫,它失敗了,並停止閱讀第一個壞字符的JSON。處理重音字符
安卓
final HttpClient client = new DefaultHttpClient(params);
final HttpPost poster = new HttpPost(Constants.COMMAND_URL);
poster.addHeader("Content-Type", "application/json; charset=utf-8");
final String jsonString = cmd.getJSON().toString();
poster.setEntity(new StringEntity(jsonString));
final HttpResponse response = client.execute(poster);
PHP:
header('Content-Type: application/json; charset=utf-8', true,200);
$data = file_get_contents('php://input');
$json = json_decode($data, true);
例JSON:
{"Params":{"PageIndex":0,"PageSize":20,"SearchTerm":"râs"},"Request":"Search","SessionID":"3EF90227"}
當我從服務器獲取JSON它顯示爲
{"Result":1,"Results":[{"PlaceName":"R\u00e2\u0219nov Citadel","Country":"Romania","OnlineID":"142","Location":"R\u00e2\u0219nov, Bra\u0219ov County","Category":"1"}]}
所以它用\ u00e2替換â,我可以從Android做到嗎?
編輯:澄清,我需要通過PHP發送重音字符到我的數據庫的方式。如果我將它們發送(即。),那麼json_decode失敗。
我已經做了android系統
函數utf8_encode
在PHP和new String (oldstring.getBytes(),"UTF-8")
,並沒有幫助。
編輯︰它現在的作品,我不知道爲什麼,afaik我沒有做出任何改變。
服務器發送\ u00e2機器人從將其轉化爲(使用HTML.fromHTML),並且當我輸入的是Android發送。這是問題,我需要發送\ u00e2。我嘗試過使用HTML.toHTML,但它並沒有改變重音字符,只是把標籤放在文本中。 –
@raybritton:你爲什麼需要?如果它是UTF-8編碼,是不是正確的json? (只是要求把它放下,也許你可以通過告訴android json組件使用哪種編碼) – hakre
不知道這是否有幫助,但你可能能夠通過這個鏈接調試你發送/接收的內容:http FYI花了我很長時間才發現:P – DarkMantis