RPW*_*RPW 5 javascript java jquery json utf-8
我有一个标准的 HTML5 类型的客户端/服务器设置。服务器端全是Java,客户端是JavaScript。使用 ajax 我发送查询并接收回复。到目前为止,我没有遇到任何问题JSON.parse(data)。但是,我有一个新用户使用汉字输入了她的姓氏。这会导致客户端出现“JSON.parse: bad control character in string literal”错误。
服务器按如下方式构建回复(省略异常处理):
JSONObject jsono = new JSONObject();
jsono.put("last_name", last_name);
jsono.put("first-name", first_name);
String response = jsono.toString();
Run Code Online (Sandbox Code Playgroud)
客户端收到类似的东西:
{"last_name":"Smith","first_name":"Bob"}
Run Code Online (Sandbox Code Playgroud)
回复显示在设置为的网页上 <meta charset="utf-8">:
var theResult = JSON.parse(data);
$('#first_name').html(theResult.first_name);
Run Code Online (Sandbox Code Playgroud)
这工作得很好。但是,对于中国用户,客户端收到
{"last_name":"?","first_name":"Bob"}
Run Code Online (Sandbox Code Playgroud)
这会导致 json.parse 错误。
我现在开始研究其他角色。比如Andrés不会引起错误,也不会正常显示。看起来像Andr?s。
所以,我显然错过了一些东西。有人能告诉我问题出在哪里(例如,它是服务器端?客户端?JavaScript?jquery?html?)以及如何解决它?
我使用过的 Java 中最有用的库是Gson APIJSONObject ,它们都可以处理这个问题,那么如果你这样做,你的问题可能就解决了。请注意,这里所有与 utf-8 相关的参数都非常重要:
JSONObject jsono = new JSONObject();\njsono.put("last_name", "\xe5\x94\x90");\njsono.put("first-name", firstName);\nString myjsonString = jsono.toString();\n\n//write your output\nDataOutputStream out = new DataOutputStream(new FileOutputStream("myjson.txt"));\nout.write(myjsonString.getBytes("utf-8"),0, myjsonString.getBytes("UTF-8").length);\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
6877 次 |
| 最近记录: |