我使用java来读取文本文件,其中包含一些特殊的字符,如Yen(¥)
。我在读取文件时没有指定任何编码/字符集,并且在Windows中工作正常。但是如果我在unix机器中部署相同的内容,那么¥
将替换为“?
”。现在我要指定charset windows-1252来避免这个问题。将windows-1252
unix/linux
框上的utf-8
工作?我的unix box charset设置为“LineIterator iterator =FileUtils.lineIterator(*filename*,"Windows-1252");
”。我在代码下方使用:
{{1}}
答案 0 :(得分:2)
类StandardCharsets
为您提供了“保证在Java平台的每个实现中都可用的编码/字符集列表。”
此列表不包含Windows编码,但对于Windows,Mac和Linux上的大多数常见Java版本,Cp1251
可用。
请注意,当它不可用时,您将获得UnsupportedCharsetException
或UnsupportedEncodingException
,因此上面的代码是安全的(从某种意义上说它不会产生垃圾)。
如果您想要非常安全,通常的方法是在项目中仅使用UTF-8编码数据。
答案 1 :(得分:0)
如果我正确理解您的问题,我通常会使用文本编辑器以UTF-8编码保存文本文件,然后在从java程序打开该文件时再次指定UTF-8来解决此问题。