
1、編碼方式介紹:
-
ASCII
ASCII碼可以表示所有的英語字符(字母、數字、標點符號等)。ASCII碼是7位編碼(0-127),但由於計算機基本處理單位為字節(1字節=8位),所以一個ASCII字符占一個字節。 -
Unicode
因為一個ASCII字符只能表示256個字符,顯然是存在着局限的(如不能用來表示中文)。而且不同的語言有不同的字符,為了讓世界上所有的字符都有一個唯一的編碼值(如果一個編碼值對應多個字符,就會出現歧義),就出現了Unicode碼。Unicode碼可以容納100多萬個符號,每個符號的編碼都不一樣。但是Unicode碼的缺點是效率不高,比如UCS-4(Unicode的標准之一)規定用4個字節存儲一個符號,那么每個英文字母前都必然有三個字節是0,原本只需1個字節現在卻用了4個字節,這對存儲和傳輸來說都很耗資源。 -
GBK編碼
GBK編碼是國內自己設計的,GBK中一個漢字占2個字節。,國內window電腦下cmd的默認編碼就是GBK。
但是如果外國人用的時候,就會出現亂碼情況。 -
UTF-8
為了提高Unicode的編碼效率,於是就出現了UTF-8編碼。UTF-8可以根據不同的符號自動選擇編碼的長短。在UTF-8中,一個英文占1個字節,一個中文占3個字節。
外國人用也不會出現亂碼,這是西方人為了多字節字符形成的解決方案。
程序開發中一般我們使用的默認編碼就是UTF-8。
2、lua在控制台輸出時出現亂碼問題
國內window cmd下默認編碼時GBK,而寫lua腳本時使用的默認編碼是UTF8,所以就出現了亂碼問題。
- 解決方法1:修改lua文件的編碼方式為GBK。
如果使用的是VSCode,在右下角處可以點擊選擇要保存的編碼方式。
或者直接在我的電腦里面選擇lua文件,右鍵-另存為-選擇編碼方式。
-
解決方法2:臨時修改控制台編碼
在控制台界面輸入chcp 65001,則可以把當前界面暫時改成UTF-8編碼,退出則失效。 -
解決方法3:永久修改控制台編碼
比較麻煩,並且也沒太大必要,詳細可以看大佬博客。
https://blog.csdn.net/gulang03/article/details/81771343