我不知道,但有可能的是,当你第一次打开文件时,它读成UTF-8和无效字节序列变成了Unicode replacement character,那么当您尝试转换为ISO-8859-1时,它会尝试转换Unicode替换字符,但在ISO-8859-1中没有该值,因此将其转换为?
。
(即使像“ERS”文本可以以Unicode来表示并且因此UTF-8“ ERS”的ISO-8859-1编码是EB
72
73
这是一个三字节UTF-的起始字节8序列,但接下来的两个字节不是连续字节,所以将其视为UTF-8的程序会认为这些重音字符是无效的。)
我认为您需要将IntelliJ打开为ISO-8859 -1,而不是先打开它作为UTF-8,然后尝试转换为ISO-8859-1。 (当您在Notepad ++中切换编码时,它必须返回到文件的原始字节并将它们解释为ISO-8859-1,而不是试图通过将无效字节更改为已更改的内容转换为ISO-8859-1替换字符)。
请注意,ë是一个完全有效的Unicode字符。它可以表示为U + 00EB,拉丁字母e,带有分音符,或者作为两个代码点,U + 0065和U + 0308,拉丁小写字母e加上合并分音。但是U + 00EB将以UTF-8编码为双字节序列C3
AB
,并且对于U + 0065 U + 0308,“e”将被编码为自身,65
,并且U + 0308将被编码为CC
88
。
所以 “E” 在UTF-8必须是C3
AB
或65
CC
88
。它不能是EB
。
为什么不直接使用UTF-8?也许Intellij与您选择的编码有问题? –
@bureaquete,UTF-8不能使用此文件。 Notepad ++和Intellij都具有默认的UTF-8,并且要显示的字符需要更改。 – parsecer
你使用文件>文件编码> ISO-8859-1>转换吗? 通过这些步骤,我的intellij –