我有这个文本文件,其中可能包含Latin1字符集中的一些不受支持的字符,这是我的JVM的默认字符集。
当我的java程序试图从文件中读取时,这些字符会变成什么? 具体地说,假设我在文件中有一个2字节长的字符,它是否会被读作单字节字符(因为Latin1中的每个字符只有1个字节长)?
谢谢,
答案 0 :(得分:3)
我无法使用InputStreaReader选项,因为必须使用Latin1读取该文件。
并且
我有这个文本文件,其中可能包含Latin1字符集中的一些不受支持的字符...
这里你有相互矛盾的要求。
文件是LATIN-1(并且没有“不支持的字符”)或者它不是LATIN-1。如果它不是LATIN-1,你应该试着找出它真正的字符集/编码,并使用那个而不是LATIN-1来读取文件。
正如其他答案/评论所解释的那样,您可以更改JVM的默认字符集,也可以在打开Reader
时明确指定字符集。
我在设置JVM的默认字符集时遇到问题。
请解释您正在尝试的内容以及您遇到的问题。
(并且有点害怕弄乱它!)
胆小鬼! : - )
FWIW - 如果您尝试读取(比如)LATIN-1中的数据流且数据流实际上不在LATIN-1中,那么您可以期待以下内容:
最终结果将是部分乱码文本。根据真实字符集和字符的确切含义,拼接可能是可逆的,也可能是不可逆的。但最好避免“去那里”......通过在第一个实例中使用RIGHT字符集进行解码。
答案 1 :(得分:1)
首先,您可以指定在读取文件时使用的字符集。例如,请参阅:java.io.InputStreamReader
其次。是,如果使用1字节字符集进行读取,则每个字节将用于映射到一个字符。
第三:测试它,你将毫无疑问地看到实际发生的事情!
答案 2 :(得分:0)
如果你不知道这个字符集你就必须猜测它。这很棘手且容易出错。
以下是有关此问题的问题: How can I detect the encoding/codepage of a text file
看看如何欺骗记事本猜错。