当我在本地部署后端并调用this方法(通过url或资源管理器)时,我在JSON中收到这样的响应:
"pronunciations": [ {
"type": "ahd-legacy",
"pronunciation": "(rēˈstrə)"
} ]但是,第二次我将其部署到应用程序引擎并调用此方法(该方法将对象存储在objectify中),然后以对象格式将其发送回以JSON的形式接收到的对象:
"pronunciations": [ {
"type": "ahd-legacy",
"pronunciation": "(r����str��)"
} ]我还尝试将字符串存储为utf-8字节(对象化自动转换为base64,然后仍然转换为上面的)。
我是否应该专门为某物贴上标签,以便它被正确地存储?
发布于 2015-02-20 15:28:16
我搞清楚了是什么。当从本地运行而在部署时不能工作,原因是当我从端点发出一个接收消息的调用时,它会自动使用ASCII服务器的编码。如果你想让它起作用,你需要提出这样的请求:
URL url = new URL(uri);
String response = new BufferedReader(
new InputStreamReader(url.openStream(), "UTF-8")).readLine();
JSONParser jsonParser = new JSONParser();
return jsonParser.parse(response);发布于 2015-01-19 05:24:40
这可能不是存储问题,但更可能是在从网络接收/发送数据并对其进行编码/解码时出现的编码问题。
GAE生产服务器上的JVM设置为默认编码为US。在你的本地机器上,它可能设置为UTF-8。
每当您在字符串和字节数组之间进行转换时,应该始终显式地使用UTF-8。
https://stackoverflow.com/questions/28015272
复制相似问题