我正在为Java应用程序使用GAE数据存储,并存储一些将以多种语言显示的文本。在我的servlet,我第一次检查,看看是否有一个在数据存储中的任何数据,并且,如果没有,我创建了一些,类似以下内容:Google App Engine数据存储区编码?
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 Data Viewer查看我的数据时,条目变成了Espa±ol,当我点击它查看它时,我得到一个500服务器错误。 (还有一些其他条目从右到左的文本根本不在数据查看器中显示,但一次只有一个问题...)
有什么特别的我可以在我的设置字符编码的代码,还是将GAE指定为我要存储的数据是UTF-8?或者是Eclipse端的问题,并且我应该使用Java代码做些什么?
不是说它本身就是一个“解决方案”,但是如果我手动插入数据,使用数据查看器,它会被插入正常,我的servlet从数据存储中提取数据并返回数据也会返回正确的数据。这可能成为我的解决方案;我只需要完成数据的初始加载,在此之后它不会被更新,因此手动进行是一种选择。虽然我更想知道编码解决方案为什么不起作用... – sernaferna 2010-05-06 17:09:06