微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 为什么JSON中的中文字符会导致JSON.parse出现“错误的控制字符”错误?

我有一个标准的HTML5类型的客户端/服务器设置.服务器端都是Java,客户端是JavaScript.使用ajax我发送查询并接收回复.到目前为止,我对JSON.parse(数据)没有任何问题.但是,我有一个新用户使用中文字符输入她的姓氏.这导致客户端“JSON.parse:字符串文字中的错误控制字符”错误.

服务器按如下方式构建回复(省略异常处理):

JSONObject jsono = new JSONObject();
jsono.put("last_name", last_name);
jsono.put("first-name", first_name);
String response = jsono.toString();

客户收到如下内容

{"last_name":"Smith","first_name":"Bob"}

回复显示在设置为< Meta charset =“utf-8”>的网页上:

var theResult = JSON.parse(data);
$('#first_name').html(theResult.first_name);

这很好用.但是,对于中国用户,客户端会收到

{"last_name":"唐","first_name":"Bob"}

这会导致json.parse错误.

我现在开始看其他角色了.例如,Andrés不会导致错误,但也无法正常显示.它看起来像安德烈斯.

所以,我显然遗漏了一些东西.有人可以告诉我问题所在(例如,它是服务器端吗?客户端?JavaScript?jquery?html?)以及如何解决它?

解决方法:

我使用的Java中最有用的库是Gson API和JSONObject,两者都可以解决这个问题,如果你这样,你的问题可能已经解决了.请注意这里所有与utf-8相关的参数非常重要:

JSONObject jsono = new JSONObject();
jsono.put("last_name", "唐");
jsono.put("first-name", firstName);
String myjsonString = jsono.toString();

//write your output
DataOutputStream out = new DataOutputStream(new FileOutputStream("myjson.txt"));
out.write(myjsonString.getBytes("utf-8"),0, myjsonString.getBytes("UTF-8").length);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐