我存储来自世界各地的地名(例如Râşnov),它正确存储在数据库中,当发送到/从php发送时,它会正确显示/保存。当发送到android它正确显示,但当我尝试通过Android从PHP发送任何重音字符(和其他一些)到数据库时,它失败,并停止在第一个坏字符读取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就会失败。
我已经完成了
函数utf8_encode
在php和new String (oldstring.getBytes(),"UTF-8")
在android中它并没有帮助。
答案 0 :(得分:2)
这可能是因为Android不接受这些特定字符,而是用相关代码替换它。
只有部分Android版本会接受所有重音字符。
请查看以下链接: http://forums.omgpop.com/forum-feedback/3519-android-app-cannot-add-accented-characters.html