我正在爲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