我正在尝试记录一些俄语文本:
LOG.info("тестирование русского");
但是我得到了问题符号(从网上查看):
[应用ID /应用版本] .: 15:18:44,753 INFO [class] - ???????????? ????????
使用UTF-8编码保存的Java文件。所有设置都是默认设置。
即使我用俄语字符读取UTF-8中的文件并尝试从中记录某些内容 - 编码也是错误的。
答案 0 :(得分:3)
我的希伯来文有类似的问题。我发现它是由默认编码引起的。
要检查默认编码,我使用了以下代码:
OutputStreamWriter out = new OutputStreamWriter(new ByteArrayOutputStream());
String encoding = out.getEncoding();
在我的电脑上,编码为“UTF8”。在GAE服务器上,它是“ASCII”。
我通过将代码中的所有文件读取器替换为:
来解决问题new InputStreamReader(new FileInputStream(file), "UTF8"));
这告诉Java忽略默认编码,并将所有输入文件打开为UTF8。
答案 1 :(得分:1)
试试这个。显然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;
}
}