我不知道,但有可能的是,當你第一次打開文件時,它讀成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 –