[英]How do I display unicode characters in the Eclipse console window?
[英]How do I make eclipse print out weird characters in unicode?
所以我试图让我的程序输出一个带有名单列表的文本文件。 一些名字有奇怪的字符,如Åström。
我已经从以“UTF-8”编码的网页中抓取了这些名称列表,或者至少我很确定它的确如此,因为页面来源说
“meta http-equiv =”Content-Type“content =”text / html; charset = UTF-8“/”
这是我到目前为止所尝试的:
public static void write(List<String> list) throws IOException {
Writer out = new OutputStreamWriter(new FileOutputStream("test.txt"), "UTF-8");
try {
for (int i=0;i<list.size();i++) {
try {
byte[] utf8Bytes = list.get(i).getBytes("UTF-8");
out.write(new String(utf8Bytes, "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
out.write(System.getProperty("line.separator"));
}
}
finally {
out.close();
}
}
我有点困惑为什么它不起作用。 我得到的输出是“Ã...ström”,这非常奇怪。
有人可以指点我正确的方向吗? 谢谢!
在另一个不相关的说明中,除了笨重之外,是否有更简单的方法将新行写入文本文件
out.write(System.getProperty( “line.separator”));
我有? 我在网上看到了它并且它有效,但我只是想知道是否有更清洁的方式。
将Eclipse > Preferences > General > Workspace > Text file encoding
为UTF-8。
内容确实是UTF-8,如果打印到控制台,它似乎没问题。 可能导致该问题的是字符串的解码和编码,这是不必要的。 而不是OutputStreamWriter尝试使用java.io.PrintWriter。 它有println方法,最后用系统行分隔符打印出字符串。 它看起来像:
printStream.println(list.get(i));
此外,打开文件以查看它时尝试使用浏览器。 它们允许您在打开后选择编码,以便您可以快速尝试多种编码以查看实际使用的内容。
记事本不是一个功能特别丰富的编辑器。 它将尝试猜测文档编码,有时会出现意外结果 。 “纯文本”文档不带有关于其编码的任何元数据,这给它们带来了某些限制。 Windows应用程序(包括记事本)通常依赖字节顺序标记 (Java字符串中的U + FEFF或"\"
)来确定编码是否为Unicode格式。 这可能有助于记事本; 它会对你的网页问题毫无用处。
HTML 4规范定义了如何设置输出编码 。 除了指定元编码之外,还应设置Content-Type
HTTP标头。
您没有在网络应用中提及您正在使用的内容。 servlet应该设置内容类型setContentType("text/html; charset=UTF-8")
; JSP应该使用page指令来做同样的事情。 其他视图技术将提供类似的机制。
byte[] utf8Bytes = list.get(i).getBytes("UTF-8");
out.write(new String(utf8Bytes, "UTF-8"));
此代码执行一些无用的操作; 它将字符数据从UTF-16转码为UTF-8,然后从UTF-8转换回UTF-16,然后将数据写入Writer
(它将UTF-16再次转码为UTF-8)。 这段代码是等效的:
String str = list.get(i);
out.write(str);
使用PrintWriter
获取换行支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.