处理重音字符

时间:2011-11-23 09:17:17

标签: php android json

我存储来自世界各地的地名(例如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中它并没有帮助。

编辑:它现在有效,我不知道为什么,afaik我没有做任何改动。

1 个答案:

答案 0 :(得分:2)

这可能是因为Android不接受这些特定字符,而是用相关代码替换它。

只有部分Android版本会接受所有重音字符。

请查看以下链接: http://forums.omgpop.com/forum-feedback/3519-android-app-cannot-add-accented-characters.html

https://android.stackexchange.com/questions/4229/is-it-possible-to-type-accented-letters-using-the-galaxy-s-english-keyboard