程式亂碼探索

e71hao發表於2015-12-08
亂碼問題經常遇到,如果要深入理解,必須自己多做實驗,如果懂得程式設計,用C++自己寫個程式驗證一下,會有更深入的理解。
1.亂碼定義:
2.亂碼原因:程式程式碼使用了錯誤的編碼方式讀取檔案(解碼),顯示了亂碼。
實驗(為了加深理解,需要自己動手操作一下,就會有新的體會!!!):
準備二個檔案:utf-8.txt,gbk.txt.每個檔案都輸入  a + 換行+漢 。用win的記事本分別儲存為utf-8編碼,ansi(在中文作業系統,ansi設定的為gbk編碼)編碼。然後ultraedit中有個“切換十六進位制”看看分別顯示什麼:



從上面可以得到這樣一些資訊:字母 a 的十六進位制編碼是0x61,回車是0x0D,換行是0x0A,文字“漢”的gbk編碼為BABA,
utf8的編碼為E6B189.可以進入網站http://bianma.supfree.net/,輸入漢字即可得,如下圖:


再次實驗:在ue中用utf8格式讀gbk.txt,顯示為亂碼。同樣的,用gbk格式讀utf-8.txt,顯示為亂碼。

這樣退出一個結論:ue這個程式使用錯誤編碼方式讀檔案gbk.txt,顯示亂碼。這可以解釋很多問題,如下:
做另外一個實驗:你用xshell連線linux,把gbk.txt,utf-8.txt長傳到linux中,設定應用程式xshell的編碼,會得到很有趣東西:
如下圖:

仔細觀察上面的實驗輸出,同樣的檔案,同樣的命令,同樣的應用程式,因為設定終端不同的編碼方式,有的正確顯示,
有的顯示亂碼,你會發現什麼問題呢?你會想到什麼呢?

3.

跨應用程式複製/貼上文字能保留文字格式的原理是什麼?
http://www.zhihu.com/question/34065877?sort=created


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30393770/viewspace-1868558/,如需轉載,請註明出處,否則將追究法律責任。

相關文章