Java linux字符编码问题

时间:2011-05-13 00:26:20

标签: java linux encoding character-encoding

我在linux中遇到了字符编码的问题。我正在从使用UTF-8编码保存的amazon S3中检索内容。内容是中文的,我可以在浏览器中正确查看内容。

我正在使用amazon SDK检索内容并对其进行更新。这是我正在使用的代码:


StringBuilder builder = new StringBuilder();
S3Object object = client.getObject(new GetObjectRequest(bucketName, key));
        BufferedReader reader = new BufferedReader(new 
                InputStreamReader(object.getObjectContent(), "utf-8"));
while (true) {
    String line = reader.readLine();
    if (line == null) 
        break;
    builder.append(line);
}

这段代码在Windows环境中运行良好,因为我能够更新内容并将其保存回来,而不会弄乱任何中文字符。

但是,它在linux环境中的表现不同。代码无法正确翻译字符,中文字符呈现为???

我不确定这里出了什么问题。任何指针都将受到赞赏。

-Thanks

1 个答案:

答案 0 :(得分:3)

默认字符集与您使用的2 OS不同。

要开始,您可以通过打印默认字符集来确认差异。

Charset.defaultCharset.name()

在代码中的某处,我认为这个默认字符集用于某些字符串转换。正确的程序应该是追踪它,并指定UTF-8。

如果没有看到该代码,我只能建议采用'作弊'方式:明确地设置默认字符集,在代码开头附近或在Java启动时。请参阅此处更改默认字符集:Setting the default Java character encoding?

HTH