【发布时间】:2011-02-16 10:12:50
【问题描述】:
我正在将 GAE 数据存储用于 Java 应用程序,并存储一些将采用多种语言的文本。在我的 servlet 中,我首先检查数据存储中是否有任何数据,如果没有,我将创建一些,类似于以下内容:
ArrayList<Lang> list = new ArrayList<Lang>();
list.add(new Lang("EN", "English", 1));
list.add(new Lang("ES", "Español", 0));
//more languages here...
PersistenceManager pm = PMF.get().getPersistenceManager();
for(Lang l : list) {
pm.makePersistent(l);
}
由于这是使用 JDO,我想我也应该包含 Lang 类的相关部分:
@PersistenceCapable
public class Lang {
@PrimaryKey
private String code;
@Persistent
private String name;
@Persistent
private int popularity;
// getters & setters & constructors...
}
但是,非 ASCII 字符让我很伤心。我已将我的 Eclipse 项目设置为使用 UTF-8 编码而不是默认的 Cp1252,所以我认为从这个角度来看我没问题,但是当我使用 App Engine 数据查看器查看我的数据,该 Español 条目变为 Español,当我单击它查看它时,我收到 500 服务器错误。 (还有一些其他的从右到左的文本条目根本不显示在数据查看器中,但一次出现一个问题......)
我可以在我的代码中做些什么特别的事情来设置字符编码,或者向 GAE 指定我存储的数据是 UTF-8 吗?或者是 Eclipse 方面的问题,我应该对我的 Java 代码做些什么?
【问题讨论】:
-
并不是说它本身就是一个“解决方案”,但是如果我手动插入数据,使用数据查看器,它会被很好地插入,我的 servlet 从数据存储中提取数据并返回它返回数据正常。这可能成为我的解决方案;我只需要完成数据的初始加载,之后就不会更新了,所以手动加载是一种选择。虽然我更想知道为什么编码解决方案不起作用......
标签: java google-app-engine character-encoding google-cloud-datastore