我正在寻找有关应用程序引擎如何处理字符编码的一些解释。我正在开发服务器位于应用引擎上的客户端-服务器应用程序。
这是一个从头开始构建的新应用程序,因此我们到处都使用 UTF-8。客户端通过 POST,x-www-form-urlencoded 向服务器发送一些字符串。我收到它们并回显它们。当客户取回它时,它是 ISO-8859-1!我在 POST 到 blobstore 时也看到了这种行为,参数以 UTF-8 形式发送,multipart/form-data 编码。
作为记录,我在 Wireshark 中看到了这一点。所以我 100% 确定我发送 UTF-8 并接收 ISO-8859-1。另外,我没有看到 mojibake:ISO-8859-1 编码的字符串非常好。这也不是误解 Content-Type 的问题。这不是客户端。一路走来正确识别我正在发送 UTF-8 参数,但由于某种原因将它们转换为 ISO-8859-1。
我被引导相信 ISO-8859-1 是 GAE servlet 的默认字符编码。我的问题是,有没有办法告诉 GAE 不要转换为 ISO-8859-1,而是到处使用 UTF-8?
假设 servlet 做了这样的事情:
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("application/json");
String name = req.getParameter("name");
String json = "{\"name\":\"" + name + "\"}";
resp.getOutputStream().print(json);
}
我尝试将响应和请求的字符编码设置为“UTF-8”,但这并没有改变任何东西。
提前致谢,