?首先要區(qū)別3個概 :編碼集、字符集、字體 是完全不同的東西,我們要解決的是字符集問題。
當(dāng)一個系統(tǒng)初始化完畢后,會生成一個?/usr/lib/locale/locale-archive 文件,這個是字符集二進制文件,是系統(tǒng)不同語言運行的核心,通過命令 locale -a 可以看到當(dāng)前文件中支持的語言
locale 命令可以看到當(dāng)前的字符集情況
?由于網(wǎng)絡(luò)上充斥著大量垃圾信息(缺乏理論說明的解決方案),這里需要詳細解釋一下。
這里的POSIX是系統(tǒng)自帶的,也就是C語言,對于其他語言 (eg. zh_CN.UTF-8),可以通過如下命令生成到/usr/lib/locale/locale-archive文件中:
localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
此處代表的含義是: 通過UTF-8編碼格式,對zh_CN進行編碼,生成zh_CN.UTF-8字符集,這里的zh_CN可以通過如下命令查看:
(可以看到有 ca_ES en_US等很多文件夾,所有命令中 zh_CN可以改成這里任意文件夾名)
到這里,通過locale -a |grep zh_CN 確認(rèn)了我們系統(tǒng)支持了中文的能力
?通過 fc -list確認(rèn)我們支持當(dāng)前系統(tǒng)支持的字體
沒有則向fonts傳輸就好(yum安裝就不說了,常規(guī)字體基本都沒有問題)
對于系統(tǒng)已經(jīng)支持中文的條件下,只需要選擇對就行了
網(wǎng)絡(luò)上有很多帖子建議修改 /etc/environment 、/etc/profile、~/.bash_profile 、甚至 rc.local等
這些東西都不建議去設(shè)置,centos7專門設(shè)置了 /etc/locale.conf文件
回到locale命令
執(zhí)行該命令后,所有選項都是"POSIX"后,對 /etc/locale.conf 進行編輯,輸入 LC_CTYPE=zh_CN.UTF-8 后刷新,命令如下:
echo ""?> /etc/locale.conf
echo "LC_CTYPE=zh_CN.UTF-8">?/etc/locale.conf
source?/etc/locale.conf
?此時 中文亂碼問題就解決了。那么為什么不去不更改其他選項呢?或者直接將LANG 改成zh_CN.UTF-8呢,這里要弄清每一個參數(shù)的含義:文章來源:http://www.zghlxwxcb.cn/news/detail-465964.html
參數(shù) | 說明 |
LANG | 當(dāng)其他參數(shù)沒有指定的時候,就指定為該值 |
LC_CTYPE | 語言符號和分類(可以看到這正是我們需要修改的) |
LC_NUMERIC | 數(shù)字格式,一般不用更改 |
LC_TIME? | 時間格式,直觀影響就是date命令的輸出 |
LC_COLLATE? | 排序的習(xí)慣規(guī)則,一般也不用修改 |
LC_MONETARY | 貨幣單位,這個對于服務(wù)器來說,沒有修改必要 |
LC_MESSAGES | 提示信息,如安裝軟件,出現(xiàn)提示之類,無關(guān)緊要,用命令行的人總會點英語 |
LC_NAME | 姓名書寫方式 |
LC_ADDRESS | 地址書寫方式 |
LC_TELEPHONE | 電話書寫方式 |
LC_MEASUREMENT | 度量衡表達方式,不用關(guān)系,幾磅幾磅之類 |
LC_PAPER | 紙張大小 |
LC_IDENTIFICATION | 對locale自身包含信息的概述 |
LC_ALL | 覆蓋其他參數(shù)的值 |
通常我們要做的就僅僅是改變LC_CTYPE就可以,如果是簡單機器下這里的任意一項都可以很方便的修改,但是如果復(fù)雜第一點,則很容易出現(xiàn) setlocale: 錯誤或警告文章來源地址http://www.zghlxwxcb.cn/news/detail-465964.html
到了這里,關(guān)于Linux (centos)中文亂碼問題解決 及說明的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!