Linux與Windows系統(tǒng)語言編碼區(qū)別
在Linux操作系統(tǒng)下际插,我們有時打開在windows下的txt文件周瞎,發(fā)現(xiàn)在windows下能正常顯示的txt文件出現(xiàn)了中文亂碼说搅。
出現(xiàn)這種情況的原因為兩種操作系統(tǒng)的中文字符編碼方式(壓縮方式)不同,在windows環(huán)境中中文字符編碼一般為gbk胡桃,而在linux環(huán)境中為utf8食绿,這就導致了在windows下能正常顯示txt文件在linux環(huán)境下打開呈現(xiàn)了亂碼狀態(tài)侈咕。
系統(tǒng)編碼設置
locale.gen
文件
# /etc/locale.gen: list all of the locales you want to have on your system
#
# The format of each line:
# <locale> <charmap>
#
# Where <locale> is a locale located in /usr/share/i18n/locales/ and
# where <charmap> is a charmap located in /usr/share/i18n/charmaps/.
#
# All blank lines and lines starting with # are ignored.
#
# For the default list of supported combinations, see the file:
# /usr/share/i18n/SUPPORTED
#
# Whenever glibc is emerged, the locales listed here will be automatically
# rebuilt for you. After updating this file, you can simply run `locale-gen`
# yourself instead of re-emerging glibc.
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
- 查看系統(tǒng)語言編碼種類
/usr/share/i18n/locales/
目錄下包含系統(tǒng)支持的編碼語言種類
gentoo ~ # ls /usr/share/i18n/locales/
en_US en_GB en_HK
zh_CN zh_TW zh_HK
ja_JP de_DE ......
gentoo ~ #
- 查看字符編碼壓縮方式
/usr/share/i18n/charmaps/
目錄下包含系統(tǒng)支持的字符編碼方式
ls /usr/share/i18n/charmaps/
ANSI_X3.110-1983.gz IBM1026.gz ISO-8859-16.gz
ANSI_X3.4-1968.gz IBM1047.gz ISO_8859-1,GL.gz
ARMSCII-8.gz IBM1124.gz ISO-8859-1.gz
ASMO_449.gz IBM1129.gz ISO-8859-2.gz
GB18030.gz ISIRI-3342.gz SAMI.gz
GB_1988-80.gz ISO_10367-BOX.gz SAMI-WS2.gz
GB2312.gz ISO_10646.gz SEN_850200_B.gz
GBK.gz ISO_11548-1.gz SEN_850200_C.
HP-ROMAN9.gz ISO_6937.gz UTF-8.gz
......
-
enca
查看文件編碼方式
enca -L zh_CN file ###檢查文件的編碼
解決方案
- 使用
iconv
命令進行文件編碼轉換,如亂碼文件名為hello.txt器紧,那么在終端輸入如下命令:
iconv -f gbk -t utf8 hello.txt > hello.utf8.txt
- 使用
enca
命令轉換:
enca -L zh_CN -x UTF-8 hello.utf8.txt ###將文件編碼轉換為"UTF-8"編碼
enca -L zh_CN -x gbk hello.txt ###將文件編碼轉換為"gbk"編碼
enca
有一個好處,如果文件本來就是你要轉換的那種編碼耀销,它不會報錯,還是會print出結果來铲汪, 而”iconv”則會報錯熊尉。