App下載

編碼字符集對編程的影響——代碼亂碼怎么解決

猿友 2021-06-18 16:19:49 瀏覽數(shù) (4676)
反饋

很多小伙伴在學習編程的時候會出現(xiàn)相互之間互相借鑒代碼參考的現(xiàn)象(借鑒學習是好事,但是代碼抄襲是對別人勞動成果的否定)。但是有些時候代碼拷貝過來一看確傻了眼,很多字符都出現(xiàn)了奇奇怪怪的亂碼,有些則是一片一片的方塊,這就是代碼亂碼,那么代碼亂碼怎么解決呢?且聽小編細細分解。

出現(xiàn)亂碼的原因——字符集

眾所周知,計算機只認識0和1,不認識其他的字,但是我們最后要讓計算機顯示字,所以我們用一個字節(jié)(八位,有256種狀態(tài))來表示一個字符。對于英語國家而言,他們使用的字母只有26個,算上大寫,加上數(shù)字,再加上一些標點符號和一些特殊處理,使用128位足夠表示他們需要表示的所有內(nèi)容了。于是他們設計出了ASCII碼表,并且廣為使用。

ASCII碼表

但是這個世界上并不是只有英文,還有中文,日文,韓文等文字,這些文字ASCII碼表并沒有對應的數(shù)值,所以很多文種都發(fā)展了專屬的字符集。以中文為例子,我們發(fā)展出了gb2312以及gbk(gb2312的進階版)兩種字符集,它采用兩個字節(jié)(一個字節(jié)沒有辦法表示所有漢字)而且兼容ASCII碼。

再往后因為各個國家都有對應的字符集,會照成使用上的混亂,這時候Unicode出現(xiàn)了,它又被稱為萬國碼,他可以表示所有語言的所有文字,其中最出名的是UTF-8,這是一種可變字節(jié)長度的編碼,最長可以達到4字節(jié)。同樣的,他也兼容ASCII碼。

為什么會出現(xiàn)亂碼——字符集選用錯誤

剛才介紹了三種字符集,其中有兩種都有涉及到中文,也就是接下來我們的主角:utf-8和gbk(gb2312暫不做討論)。

小編這里設定了兩組對照試驗以幫助各位讀者了解亂碼的原因:

使用utf-8編碼的文件(亂碼更多的是一些奇形怪狀的文字):

utf-8編碼文件

使用gbk編碼的文件(亂碼多為方片中帶有一個問號):

GBK編碼

可以發(fā)現(xiàn),這兩種字符集如果選擇錯誤的話,使用對方的字符集讀取文件都會導致亂碼。上述結(jié)果也給我們帶來了亂碼的一種簡單的判斷方式——根據(jù)亂碼的情況判斷應該使用什么字符集。

解決方法

出現(xiàn)亂碼不要慌,只需要選擇使用對應的正確方法重新打開就可以了。這里切記,千萬不要點保存。因為因為點完保存后編輯器會把亂碼以對應的格式保存,這樣子這些亂碼就只能是亂碼,無法恢復了。

小編建議

其實從上面的結(jié)果還能得出一個結(jié)論:不管怎么亂碼,ASCII碼不會亂,之前字符集的介紹中也有提起。所以,如果注釋使用英文,就不會出現(xiàn)亂碼。就算必須使用中文,也可以在文件開頭用英文注明該代碼使用的字符集,方便后來者的閱讀(這點python就做得比java好,默認使用utf-8)。

小結(jié)

以上就是關于代碼亂碼怎么解決的方法,更多編程小問題的解決,關注W3C技術頭條,小編幫你解決!


0 人點贊