摘要
我遇到了无法解决的字符串编码和GAE问题。基本上我有一个经典的编码问题,其中像ñ,é,ü这样的特殊字符在数据存储区查看器和客户端中都显示为 ,但是,仅在生产模式下。
我通过两种机制将数据保存到数据存储区: - 用户输入:这在开发模式和生产中都很完美 - 第三方API:此版本适用于开发模式,但不适用于生产
关注数据
的Content-Type:text / html的;字符集= UTF-8
我的Eclipse配置为UTF-8。我认为这是在开发模式下一切运行良好的主要原因。
我还没有找到如何将生产JVM设置为UTF-8(我读here,默认为US-ASCII,可能无法更改) - 在开发模式下,我将eclipse配置为使用UTF-8 - 在生产模式中,我遵循了this guy的建议,但它没有改变行为:
Top-level appengine-web.xml:
<system-properties>
<!-- Configure java.util.logging -->
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
<!-- UTF-8 Support -->
<property name="file.encoding" value="UTF-8" />
</system-properties>
<!-- UTF-8 Support -->
<env-variables>
<env-var name="DEFAULT_ENCODING" value="UTF-8" />
</env-variables>
我不知道还有什么可以解决它。有没有人解决这个问题呢?
答案 0 :(得分:3)
嗯,遗憾的是,基于这里缺乏答案,我认为没有办法将UTF-8设置为GAE生产JVM的默认编码。
在上面困扰我的情况下,我的问题是我正在使用默认编码读取第三方API请求,在生产GAE中是US-ASCII:
BufferedReader reader =
new BufferedReader(new InputStreamReader(url.openStream());
将上面的行更改为
BufferedReader reader =
new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8");
解决了这个问题。