通过 AJAX 发布 JSON 时,我遇到了不好的情况。
出于测试目的,下面的代码重现了该问题,并在 Firefox Scratchpad 中创建(我在应用程序层使用 Backbone):
var xhr = new XMLHttpRequest();
xhr.open("POST", "/my/api/url"); // could be PUT too
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify({ test: "é" }));
实际上,无论我在 JSON 中使用什么重音字符串,它总是发送不正确(我已经在最新版本的 Firefox 和 Chrome 中进行了测试)——我可以在 Chrome DevTools/Firebug 中看到请求数据错误。在这种情况下发送的是é
.
我在 Java 中找到了一种解决方法。我不会费心使用它一次或两次,但是,似乎情况并非如此。还有很多事情要做。
解决方法如下:
test = new String(test.getBytes("ISO-8859-1"), "UTF-8");
任何进一步的帮助将不胜感激。
我的设置(如果有人需要):
- 视窗 7 x64
- JDK 1.7 x64
- JBoss 4.2.3
- 高枕无忧
- 我的Eclipse 9.1
每当它们出现时,我都会经常用有趣的数据更新这个问题。