繁体   English   中英

Java Linux字符编码问题

[英]Java linux character encoding issue

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

我正在使用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环境中的行为有所不同。 该代码无法正确翻译字符,汉字呈现为???

我不确定这里出了什么问题。 任何指针将不胜感激。

-谢谢

您使用的2个操作系统的默认字符集不同。

首先,您可以通过打印默认字符集来确认差异。

Charset.defaultCharset.name()

在您代码的某个位置,我认为此默认字符集已用于某些String转换。 正确的过程应该是进行跟踪,并指定UTF-8。

在看不到该代码的情况下,我只能提出一种“作弊”的方式:在代码的开头附近或在Java启动时显式设置默认字符集。 请参阅此处以更改默认字符集: 设置默认Java字符编码?

HTH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM