6

我使用 GAE 的 Cloud Endpoints 制作了 Web 应用程序。应用程序只有后端部分。应用程序调用 Google Places API 并解析 JSON 响应,创建返回给客户端的对象。客户端是使用 GAE 生成的客户端库的 Android 应用程序。

我的问题如下:在本地开发服务器上运行的应用程序在 Android 上正确显示了 UTF-8 格式的字符串,但已部署的应用程序在 Android 上显示的字符串混乱。例如:而不是 Klinički Centar,它显示 Klinički Centar。

我正在使用最新的 Fedeora GNU/Linux,在 Eclipse Kepler(最新版本)中开发,GAE 版本为 1.8.1,Google Plugin for Eclipse 版本 3.2.4(最新版本)。

为了解决这个问题,我已经失去了难以置信的时间。我认为解决方案是一些强制 UTF-8 的配置行。顺便提一下,我有appengine-web.xml以下内容:

<system-properties>
    <property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
    <property name="file.encoding" value="UTF-8" />
    <property name="DEFAULT_ENCODING" value="UTF-8" />
</system-properties>

提前感谢您的每一个建议。

4

1 回答 1

4

解决了!!!!

我认为这是谷歌的错误,就像我的一样。我假设响应将以 UTF-8 编码,所以我只使用了:

URL url = new URL(PLACE_AC_API + encodedInput + PLACE_AC_API_OPTIONS);
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

通过显式添加 charset 参数,一切都解决了:

BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName("UTF-8")));

但谷歌肯定需要看看为什么这在本地和部署中表现不同。

祝大家一切顺利,感谢您的有趣和努力!

于 2013-06-19T13:28:30.340 回答