2016-02-23 52 views
-1

當我用UTF-8保存基本上是這樣說的文本文檔:計算機時,使用安裝在計算機某處的UTF8的代碼頁來弄清楚,如何將1和0轉換爲字符,對不對?瞭解不同的字符編碼

當我保存這個內容:

激光 
äüß 
#§ 
在ISO-8895-1

,就變成這樣(在Linux上,使用凱特編輯):

æ¿å 
äüà 
#§ 

這裏沒有顯示那是什麼在第一行和第二行顯示的是一些奇怪的方塊而不是字符(可以在開發人員工具中看到)。

所以我的理解是,這意味着在utf-8中代表激活的0和1的組合被映射到ISO-8895-1中的æ,對吧?奇怪的方格> <發生是因爲ISO-8895-1字符集中沒有該二進制數字的映射,所以計算機默認爲其他編碼。

這是正確的嗎?

+0

[絕對最小每個軟件開發人員絕對,肯定必須知道Unicode和字符集(沒有藉口!)](http://www.joelonsoftware.com/articles/Unicode.html) –

+0

謝謝,我已經閱讀那,但我仍然不是100%確定我已經得到它。 – user3813234

回答

0

是的,有點正確。 如果將文件存儲爲UTF-8,則通常會得到一個特殊的字節組合,指示文件開頭的編碼類型。我想,凱特(不知道這個編輯器)不認識這個,只是將文件顯示爲別的東西。所以基本上,你的文件仍然是正確的,但只是以錯誤的方式可視化。 奇怪的正方形是另一個指標,Kate不能識別這些前導字節,因爲通常編輯者會將它們隱藏起來,只是使用這些信息來正確顯示文件。

+1

結合使用UTF-8不鼓勵BOM,因此對於UTF-8文本而言,具有BOM並不常見 –

0

你說得很對。例如The character U+6FC0 (激)用UTF-8中的3個字節進行編碼:0xE6 0xBF 0x80。

如果您在ISO-8859-1中解釋這些字節,將得到字符æ¿。根據ISO-8859-1的版本,0x80或者根本不映射到字符,或者映射到不可打印的控制字符,這就是爲什麼您只能看到三個字節的兩個字符。

如果您使用Windows-1252而不是ISO-8859-1,則會看到æ¿€

相關問題