【发布时间】:2015-07-18 03:00:07
【问题描述】:
我在 Google App Engine 上运行一个 GWT 应用程序,它通过 GWT-RPC/Servlet 将来自 GUI 的文本输入传递给 API。但是像 ä,ö,ü 这样的变音符号会被 API 误解,并且 API 只显示 ?而不是变音符号。
我很确定问题出在 Google App Engine 上的默认字符编码,即 US-ASCII:US-ASCII 不知道任何变音符号。
在我的本地机器上使用来自 JUnit-Tests 的 API 变音符号可以工作。那里的默认字符编码是UTF-8。
问题不是来自 GWT 或任何 HTML 文件的编码;我在包含一些变音符号的应用程序中使用了一个常量 Java 字符串并将其传递给 API:如果应用程序部署在 Google App Engine 中,则会出现问题。
有什么方法可以更改 Google App Engine 中的字符编码?或者有人知道我的问题的另一种解决方案吗?
将 GUI 中的变音符号存储在 GAE 数据存储中并将它们带回 GUI 非常有趣。
【问题讨论】:
-
不清楚您所说的“API 仅显示一个?”是什么意思- 在哪里?理想情况下,您应该跟踪每个阶段的确切数据,以准确找出问题所在。见codeblog.jonskeet.uk/2014/01/20/…
-
听起来您需要控制输出的字符编码。有关详细信息,请参阅stackoverflow.com/questions/11907764/…。
-
@DanielTung 我尝试同时设置
<system-properties><property name="file.encoding" value="UTF-8" /><property name="DEFAULT_ENCODING" value="UTF-8" /></system-properties>和<env-variables><env-var name="DEFAULT_ENCODING" value="UTF-8" /></env-variables>,但没有成功。 -
@JonSkeet 简而言之:运行
API.call("test äöü")将导致 API(它发送 SMS)从我的机器发送“test äöü”和“test ???”来自 GAE。 -
@AndréJanus:这并不能真正帮助我们找出问题所在。它是什么 API?你有文件吗?
标签: java google-app-engine gwt character-encoding