【发布时间】:2011-05-13 09:03:15
【问题描述】:
我在 linux 中遇到了字符编码问题。我正在从亚马逊 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 环境中的作用不同。代码无法正确翻译字符,中文字符被渲染为???
我不确定这里出了什么问题。任何指针将不胜感激。
-谢谢
【问题讨论】:
-
当你说字符被渲染为???时,你在哪里看到这些渲染?也许数据没问题,但您正试图在不支持 Unicode 的环境或没有正确字形的字体中显示它们。
-
该代码看起来不错。可能是您的终端需要处于 UTF-8 模式才能显示字符,或者您输出的编码错误,可能使用了可能不是 UTF-8 的平台默认编码。向我们展示您用于输出字符的代码,并告诉我们您使用的是什么终端。
-
当您说字符没有正确显示时,您是在将它们输出到控制台吗?如果有,是什么类型的控制台?
-
它与显示器无关。我将一些文本添加回内容,然后将其保存回 S3。如果我在 Windows 中执行此过程并在 S3 中查找更新的数据,汉字看起来很好。但如果它在 Linux 中得到处理,那么字符就会变成 ??? .我正在使用 S3 链接在浏览器中查看它。
-
也许,我应该准确一点。检索内容后,我将在内容中添加更多汉字并将其保存回 S3。我添加的新角色看起来不错。现有的角色变得一团糟。我对这种奇怪的行为一无所知。
标签: java linux encoding character-encoding