我在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
答案 0 :(得分:3)
默认字符集与您使用的2 OS不同。
要开始,您可以通过打印默认字符集来确认差异。
Charset.defaultCharset.name()
在代码中的某处,我认为这个默认字符集用于某些字符串转换。正确的程序应该是追踪它,并指定UTF-8。
如果没有看到该代码,我只能建议采用'作弊'方式:明确地设置默认字符集,在代码开头附近或在Java启动时。请参阅此处更改默认字符集:Setting the default Java character encoding?
HTH