Google App Engine编码

时间:2011-02-03 15:34:38

标签: java google-app-engine encoding

我正在尝试记录一些俄语文本:

LOG.info("тестирование русского");

但是我得到了问题符号(从网上查看):

  

[应用ID /应用版本] .:   15:18:44,753 INFO [class] -   ???????????? ????????

使用UTF-8编码保存的Java文件。所有设置都是默认设置。

即使我用俄语字符读取UTF-8中的文件并尝试从中记录某些内容 - 编码也是错误的。

2 个答案:

答案 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;
    }
}