Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java从文件中读取特殊字符?_Java_File_Encoding_Character Encoding - Fatal编程技术网

使用java从文件中读取特殊字符?

使用java从文件中读取特殊字符?,java,file,encoding,character-encoding,Java,File,Encoding,Character Encoding,我正在使用java读取一个文本文件,该文件具有一些特殊字符,如Yen(¥)。我在读取文件时没有指定任何编码/字符集,在windows中工作正常。但是,如果我在unix机器中部署相同的,则¥将替换为“?”。现在我将指定字符集windows-1252以避免该问题。windows-1252能在unix/linux机器上工作吗?我的unix box字符集设置为“utf-8”。我使用下面的代码: LineIterator iterator =FileUtils.lineIterator(*filename

我正在使用java读取一个文本文件,该文件具有一些特殊字符,如
Yen(¥)
。我在读取文件时没有指定任何编码/字符集,在windows中工作正常。但是,如果我在unix机器中部署相同的,则
¥
将替换为“
”。现在我将指定字符集windows-1252以避免该问题。
windows-1252
能在
unix/linux
机器上工作吗?我的unix box字符集设置为“
utf-8
”。我使用下面的代码:

LineIterator iterator =FileUtils.lineIterator(*filename*,"Windows-1252");

StandardCharsets
为您提供了编码/字符集列表,这些编码/字符集“保证在Java平台的每个实现中都可用”

此列表不包含Windows编码,但对于Windows、Mac和Linux上最常见的Java版本,
Cp1251
可用

请注意,当它不可用时,您将得到一个
UnsupportedCharsetException
unsupportedCodingException
,因此上面的代码是安全的(从不会产生垃圾的意义上讲)


如果您希望真正安全,通常的方法是在项目中仅使用UTF-8编码的数据。

如果我正确理解您的问题,我通常会通过使用文本编辑器以UTF-8编码保存文本文件来解决此问题,然后在从java程序打开该文件时再次指定UTF-8。

可能重复-