我存储了来自世界各地(例如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