我想記錄一些俄文本:谷歌App Engine的編碼
LOG.info("тестирование русского");
,但我得到的問題,而不是符號(從Web上查看):
[APP-ID /應用程序版本]: 15:18:44,753 INFO [class] - ???????????? ????????
用UTF-8編碼保存的Java文件。所有設置都是默認設置
即使我用俄語字符讀取UTF-8文件並嘗試從中記錄某些內容 - 編碼也是錯誤的。
我想記錄一些俄文本:谷歌App Engine的編碼
LOG.info("тестирование русского");
,但我得到的問題,而不是符號(從Web上查看):
[APP-ID /應用程序版本]: 15:18:44,753 INFO [class] - ???????????? ????????
用UTF-8編碼保存的Java文件。所有設置都是默認設置
即使我用俄語字符讀取UTF-8文件並嘗試從中記錄某些內容 - 編碼也是錯誤的。
我和希伯來文有類似的問題。我發現它是由默認編碼引起的。
要檢查的默認編碼,我用這個代碼:
OutputStreamWriter out = new OutputStreamWriter(new ByteArrayOutputStream());
String encoding = out.getEncoding();
在我的電腦中,編碼是「UTF-8」。在GAE服務器上,它是「ASCII」。
我用替換所有的文件,讀者在我的代碼解決了這個問題:
new InputStreamReader(new FileInputStream(file), "UTF8"));
此通知Java忽略的默認編碼,並打開所有的輸入文件爲UTF8。
試試這個。顯然,GAE試圖自動檢測編碼並失敗。 即使是不斷的字符串被搞砸了
public class Util {
public static String FixRussianString(String string){
try {
return new String(string.getBytes("CP1251"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return string;
}
}
您是否嘗試將文本作爲unicode類型的字符串發送? – 2011-06-02 16:15:10
很高興知道GAE(顯然是ASCII)上的默認`Charset`,我相信*是修改後的Jetty實例,它們運行在自己的風格或Linux上。 – IAmYourFaja 2013-02-26 21:04:16