有没有办法将 UTF-8 与应用引擎一起使用?
我正在寻找有关应用程序引擎如何处理字符编码的一些解释。我正在处理一个客户端 - 服务器应用程序,其中服务器位于应用程序引擎上。
这是一个从头开始构建的新应用程序,因此我们在任何地方都使用 UTF-8。客户端通过 POST(x-www-form-urlencoded)将一些字符串发送到服务器。我收到它们并回声。当客户拿回它时,它是ISO-8859-1!在POS到blobstore时,我也看到了这种行为,参数以UTF-8的形式发送,多部分/表单数据编码。
为了记录在案,我在Wireshark中看到了这一点。所以我100%确定我发送UTF-8并接收ISO-8859-1。另外,我没有看到mojibake:ISO-8859-1编码的字符串完全没问题。这也不是误解内容类型的问题。它不是客户端。在此过程中,某些内容正确识别我正在发送 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”,但这并没有改变任何东西。
提前致谢,