亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Linux服務器 > 正文

詳解Linux中文亂碼問題終極解決方法

2024-09-05 23:02:49
字體:
來源:轉載
供稿:網友

初入linux的程序員們,經常會受到亂碼的問候??芍^“始亂終棄”。因為亂碼,并且最終放棄了linux的不在少數。好吧,言歸正傳,下面來看一下linux亂碼的具體解決辦法吧。

方法一: 修改/root/.bash_profile文件,增加export LANG=zh_CN.GB18030

該文件在用戶目錄下,對于其他用戶,也必須相應修改該文件。

使用該方法時putty能顯示中文,但桌面系統是英文,而且所有的網頁中文顯示還是亂碼

方法二:
修改/etc/sysconfig/i18n文件 

#LANG="en_US.UTF-8"#SUPPORTED="en_US.UTF-8:en_US:en"#SYSFONT="latarcyrheb-sun16"

修改為: 

LANG="zh_CN.GB18030"LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"SUPPORTED="zh_CN.GB18030:zh_CN:zh"SYSFONT="lat0-sun16"SYSFONTACM="8859-15"

參考:

Linux中文亂碼問題

最近,公司在XP系統于LINUX之間傳數據時出現了中文亂碼問題!

首先,字符集:

漢字編碼:

* GB2312字集是簡體字集,全稱為GB2312(80)字集,共包括國標簡體漢字6763個。 * BIG5字集是臺灣繁體字集,共包括國標繁體漢字13053個。 * GBK字集是簡繁字集,包括了GB字集、BIG5字集和一些符號,共包括21003個字符。 * GB18030是國家制定的一個強制性大字集標準,全稱為GB18030-2000,它的推出使漢字集有了一個“大一統”的標準。

ASCII:

American Standard Code for Information Interchange,美國信息交換標準碼。 目前計算機中用得最廣泛的字符集及其編碼,由美國國家標準局(ANSI)制定。 它已被國際標準化組織(ISO)定為國際標準,稱為ISO 646標準。 ASCII字符集由控制字符和圖形字符組成。 在計算機的存儲單元中,一個ASCII碼值占一個字節(8個二進制位),其最高位(b7)用作奇偶校驗位。 所謂奇偶校驗,是指在代碼傳送過程中用來檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。 奇校驗規定:正確的代碼一個字節中1的個數必須是奇數,若非奇數,則在最高位b7添1。

偶校驗規定:正確的代碼一個字節中1的個數必須是偶數,若非偶數,則在最高位b7添1。

UTF:
Unicode 的實現方式不同于編碼方式。 一個字符的Unicode編碼是確定的,但是在實際傳輸過程中,由于不同系統平臺的設計不一定一致,以及出于節省空間的目的,對Unicode編碼的實現 方式有所不同。 Unicode的實現方式稱為Unicode轉換格式(Unicode Translation Format,簡稱為 UTF)。 * UTF-8: 8bit變長編碼,對于大多數常用字符集(ASCII中0~127字符)它只使用單字節,而對其它常用字符(特別是朝鮮和漢語會意文字),它使用3字節。 * UTF-16: 16bit編碼,是變長碼,大致相當于20位編碼,值在0到0x10FFFF之間,基本上就是unicode編碼的實現,與CPU字序有關。

注意:ASCII char (2) ;UTF-8 寬字符 wchar 4倍 。兼容性最好的編碼就是UTF-8! 畢竟GBK/GB2312是國內的標準,當大量使用國外的開源軟件時,UTF-8才是編碼界最通用的語言。

在Linux中通過locale來設置程序運行的不同語言環境,locale由ANSI C提供支持。locale的命名規則為<語言>_<地區>.<字符集編碼>,如zh_CN.UTF-8,zh代表中 文,CN代表大陸地區,UTF-8表示字符集。

在locale環境中,有一組變量,代表國際化環境中的不同設置:

1. LC_COLLATE
定義該環境的排序和比較規則

2. LC_CTYPE
用于字符分類和字符串處理,控制所有字符的處理方式,包括字符編碼,字符是單字節還是多字節,如何打印等。是最重要的一個環境變量。

3. LC_MONETARY
貨幣格式

4. LC_NUMERIC
非貨幣的數字顯示格式

5. LC_TIME
時間和日期格式

6. LC_MESSAGES
提示信息的語言。另外還有一個LANGUAGE參數,它與LC_MESSAGES相似,但如果該參數一旦設置,則LC_MESSAGES參數就會失效。 LANGUAGE參數可同時設置多種語言信息,如LANGUANE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。

7. LANG
LC_*的默認值,是最低級別的設置,如果LC_*沒有設置,則使用該值。類似于 LC_ALL。

8. LC_ALL
它是一個宏,如果該值設置了,則該值會覆蓋所有LC_*的設置值。注意,LANG的值不受該宏影響。

例子:

設置前,使用默認locale: 

代碼示例:

[root@ahlinux ~]# localeLANG="POSIX"LC_CTYPE="POSIX"LC_NUMERIC="POSIX"LC_TIME="POSIX"LC_COLLATE="POSIX"LC_MONETARY="POSIX"LC_MESSAGES="POSIX"LC_PAPER="POSIX"LC_NAME="POSIX"LC_ADDRESS="POSIX"LC_TELEPHONE="POSIX"LC_MEASUREMENT="POSIX"LC_IDENTIFICATION="POSIX"LC_ALL=

設置后,使用zh_CN.GDK中文locale:

代碼示例:

[root@ahlinux ~]# export LC_ALL=zh_CN.GBK[root@ahlinux ~]# localeLANG=zh_CN.UTF-8LC_CTYPE="zh_CN.GBK"LC_NUMERIC="zh_CN.GBK"LC_TIME="zh_CN.GBK"LC_COLLATE="zh_CN.GBK"LC_MONETARY="zh_CN.GBK"LC_MESSAGES="zh_CN.GBK"LC_PAPER="zh_CN.GBK"LC_NAME="zh_CN.GBK"LC_ADDRESS="zh_CN.GBK"LC_TELEPHONE="zh_CN.GBK"LC_MEASUREMENT="zh_CN.GBK"LC_IDENTIFICATION="zh_CN.GBK"LC_ALL=zh_CN.GBK

"C"是系統默認的locale,"POSIX"是"C"的別名。所以當我們新安裝完一個系統時,默認的locale就是C或POSIX。
在Debian中安裝locales的方法如下:

  •  通過apt-get install locales命令安裝locales包
  • ·安裝完成locales包后,系統會自動進行locale配置,你只要選擇所需的locale,可以多選。最后指定一個系統默認的locale。這樣系統就會幫你自動生成相應的locale和配置好系統的locale。
  • 增加新的locale也很簡單,用dpkp-reconfigure locales重新配置locale即可。
  • 我們也可手動增加locale,只要把新的locale增加到/etc/locale.gen文件中,再運行locale-gen命令即可生成新的 locale。再通過設置上面介紹的LC_*變量就可設置系統的locale了。下是一個locale.gen文件的樣例。

代碼示例:

# This file lists locales that you wish to have built. You can find a list# of valid supported locales at /usr/share/i18n/SUPPORTED. Other# combinations are possible, but may not be well tested. If you change# this file, you need to rerun locale-gen.#zh_CN.GBK GBKzh_CN.UTF-8 UTF-8

在我看來只要搞清楚LANG和SUPPORTED就OK了,其他可能平時也用不太多。

這里再介紹下如何設置環境變量的。

修改 /etc/sysconfig/i18n 文件,如

代碼示例:

LANG="en_US.UTF-8",xwindow會顯示英文界面,LANG="zh_CN.GB18030",xwindow會顯示中文界面。

還有一種方法 cp /etc/sysconfig/i18n $HOME/.i18n

修改 $HOME/.i18n 文件,如

代碼示例:

LANG="en_US.UTF-8",xwindow會顯示英文界面,LANG="zh_CN.GB18030",xwindow會顯示中文界面。

這樣就可以改變個人的界面語言,而不影響別的用戶

修改后的/etc/sysconfig/i18n 文件為:

代碼示例:

LANG="en_US.UTF-8"SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"SYSFONT="latarcyrheb-sun16"LC_ALL="en_US.UTF-8"export LC_ALL

設置完畢后重啟或者用rc.local使生效

或修改登錄用戶的.bash_profile文件加入

代碼示例:

export LANG=zh_CN.GB18030export LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN

一定要知道Windows XP 是GB2312的編碼,如果你的服務器字符集不是這個,估計就會是亂碼,所以要調整。

有些人在調整的時候,說我改了系統環境變量,結果造成用戶內容顯示亂碼,無非解決的方法就是兩個:

1.用iconv轉化為目前的編碼

2.用你原來使用的編碼

看了這兩條,你肯定必須要明確,你原來的字符編碼是如何的。說來說去,無非就是LANG SUPPORTED 和你原文件字符集的編碼:)

當然了locale -a你可以看看目前系統里支持的字符集,如果不支持,還要安裝奧。

前兩個方法很實用,我試驗過。其他方法都是在網上搜到的,呵呵。。。

****************************

就是從數據庫中取出來時,在存入linux的文件里時,在字符流時制定編碼格式。代碼如下:

代碼示例:

FileOutputStream fos=new FileOutputStream(new File(filePath),true);Writer out=new OutputStreamWriter(fos,"UTF-8");out.write(s);out.write("/n");out.flush();fos.close();out.close();**********************vi .bash_profileexport lang=zh_CNvi /etc/sysconfig/i18nLANG="en_US.UTF-8"SUPPORTED="en_US.UTF-8:en_US:en:zh_CN.GB18030:zh_CN:zh:zh_TW.big5:zh_TW:zh:ja_JP.UTF-8:ja_JP:ja:ko_KR.eucKR:ko_KR:ko"SYSFONT="latarcyrheb-sun16"

只改第一個不管用,好像第二個尤其重要,必須改。

1、console終端亂碼

在/etc/profile文件的最后一行添加如下內容:

代碼示例:

export LC_ALL="zh_CN.GB18030"

2、xwindow終端亂碼

在/etc/sysconfig/i18n文件的最后一行添加如下內容:

代碼示例:

export LC_ALL="zh_CN.GB18030"

亂碼分兩種情況:

1.終端(純shell界面)的亂碼

代碼示例:

vi /etc/profileexport LC_ALL="zh_CN.GB18030:zh_CN.GB2312:zh_CN.GBK:zh_CN:en_US.UTF-8:en_US:en:zh:zh_TW:zh_CN.BIG5"

保存退出,reboot系統即可..

2.X-window(圖形界面)的亂碼

代碼示例:

vi /etc/sysconfig/i18nLANG="zh_CN.GB18030:zh_CN.GB2312:zh_CN.GBK:zh_CN:en_US.UTF-8:en_US:en:zh:zh_TW:zh_CN.BIG5"LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN.GBK:zh_CN:en_US.UTF-8:en_US:en:zh:zh_TW:zh_CN.BIG5"

保存reboot即可...

新發了臺linux虛擬機,用VIM出現了中文亂碼問題,查找了資料,解決方法:

vi /etc/sysconfig/i18n

將內容改為 

代碼示例:

LANG="zh_CN.GB18030"LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"SYSFONT="lat0-sun16"

這樣中文在SSH,telnet終端就可以正常顯示了

其中,主要修改的內容主要為zh_CN.GB18030,其中要注意VI個性的內容為根目錄下,要注意權限。

每次裝完linux,用SSH連接,中文總是顯示亂碼。

解決方法:編輯/etc/sysconfig/i18n,將其中的 LANG="zh_CN.UTF-8" 改為 LANG="zh_CN.GB2312" 。

斷開重新連接。

附1,linux下中文亂 碼問題解決方案。

從windows傳過來的文件拷到linux下是亂碼,俺們又想在linux下顯示中文,怎么辦呢?我們首先進行測試,linux下的中文是否可以正常顯 示?答:yes. 所以問題就比較明顯了,windows下拷過來的不能顯示,說明windows下和linux下支持的格式是不相同的.
linux下一般是采用utf-8的編碼,而我們在windows上編輯文件時是gb2312的編碼。所以導致中文編碼會亂碼。要更正這個問題實際上很簡單只要把文件轉換成utf-8編碼格式然后再導入就ok啦。

然后使用如下命令進行轉換:

iconv -f gb2312 -t utf-8 test.txt> testutf8.tzt

(-f 就是源編碼,-t 轉換目標編碼,test.txt源文件,testutf8.txt生成目標編碼文件)

備注:使用 iconv -l 可以查看系統支持編碼格式。當然也可以添加其中的編碼格式:

默認為utf8,如果想用其他編碼如GBK

手動更改配置文件的命令:

shell> vi /etc/sysconfig/i18n

將LANG="zh_CN.UTF-8"修改為:

LANG="zh_CN.GBK"

保存并關閉,運行下面的命令使配置生效:

shell> source /etc/sysconfig/i18n

將終端字符編碼顯示為簡體中文:

shell> vi /etc/profile.d/chinese.sh

添加下面這行:

代碼示例:

export LC_ALL=zh_CN.GBKshell> source /etc/profile.d/Chinese.sh

附2,解決Linux操作系統下Java的中文亂碼問題 。

在jdk15以后,只需在~/jre/lib/fonts/下建一個fallback目錄,把你想在java中使用的字體烤貝到這個目錄中即可

以下方法在fc6下測試通過,假設用戶的jre路徑為 /usr/java/jdk1.6.0_03/jre/

代碼示例:

cd /usr/java/jdk1.6.0_03/jre/lib/fontssudo mkdir fallback

將C:/WINDOWS/Fonts/simsun.ttc拷貝到 /usr/java/jdk1.6.0_03/jre/lib/fonts/fallback文件夾內
export LC_ALL=zh_CN.GB2312;export LANG=zh_CN.GB2312是最有效的。

1.不管用那種ssh客戶端,字體設定一定要設為可以顯示中文的字體。

2.遠程的locale一定要設置為LANG=zh_CN.UTF-8

修改/etc/profile

增加這一行

export LC_ALL=zh_CN.GBK

附3,SSH顯示中文亂碼問題

1)、打開/etc/sysconfig/i18n

設置為:

代碼示例:

LANG="zh_CN.GB2312"LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"SUPPORTED="zh_CN.GB18030:zh_CN.GB2312:zh_CN.UTF-8:zh:en_US.UTF-8:en_US:en:ja_JP.UTF-8:ja_JP:ja"SYSFONT="lat0-sun16"SYSFONTACM="8859-15"

其中LANG="zh_CN.GB2312" 是必須的(如果你不想讓中文亂碼的話!!!)

其它的可以按照自已的需求來改變。

2)、打開smb.conf

添加:

代碼示例:

display charset=cp936unix charset=cp936doc charset=cp936


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产精品免费视频| 欧美裸体男粗大视频在线观看| 九九久久久久久久久激情| 欧美日韩另类字幕中文| 91久久久久久久一区二区| 日韩精品中文字幕有码专区| 91国内揄拍国内精品对白| 亚洲第一视频网| 国产精品视频网| 亚洲一区第一页| 国产精品高清在线| 疯狂做受xxxx欧美肥白少妇| 一个人看的www欧美| 91亚洲国产成人久久精品网站| 国产精品久久婷婷六月丁香| 国产亚洲a∨片在线观看| 欧美日韩国产一区二区| 国产精品h片在线播放| 日本一区二区不卡| 国产色视频一区| 久久在线精品视频| 欧洲美女7788成人免费视频| 日韩小视频在线| 久久久精品日本| 在线精品高清中文字幕| 精品国产一区二区三区久久| 亚洲欧美日韩一区在线| 日本在线观看天堂男亚洲| 欧美国产乱视频| 亚洲精品综合久久中文字幕| 美女视频久久黄| 国产精品一区二区三区在线播放| 最新国产精品亚洲| 国产精彩精品视频| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品高潮呻吟久久av无限| 亚洲天堂男人的天堂| 2020久久国产精品| 综合国产在线观看| 日韩欧美精品网站| 一区二区在线视频| 亚洲国模精品私拍| 欧美性猛交xxxx黑人猛交| 午夜精品视频网站| 欧美黄色片在线观看| 日韩高清不卡av| 午夜精品久久久久久久男人的天堂| 中文字幕亚洲自拍| 国产精品1区2区在线观看| 91精品国产综合久久久久久久久| 国产综合久久久久| 亚洲精品电影网| 亚洲第一区在线| 国产精品视频久久久久| 国产69精品久久久久9999| 性欧美xxxx视频在线观看| 国产日韩专区在线| 亚洲一级黄色av| 亚洲九九九在线观看| 7m精品福利视频导航| 欧美成人免费小视频| 欧美成在线视频| 狠狠躁天天躁日日躁欧美| 欧美成人h版在线观看| 97超级碰碰碰久久久| 亚洲国产精品久久久久久| 国产成人精品优优av| 国产一区二区欧美日韩| 98视频在线噜噜噜国产| 岛国av一区二区在线在线观看| 色综合久久88| 久久久国产一区二区三区| 欧美天天综合色影久久精品| 国产午夜精品免费一区二区三区| 最新国产精品拍自在线播放| 亚洲图片在区色| 亚洲色图狂野欧美| 日韩电影在线观看中文字幕| 91系列在线观看| 亚洲午夜未满十八勿入免费观看全集| 国产精品91免费在线| 自拍亚洲一区欧美另类| 欧美怡红院视频一区二区三区| 在线视频日韩精品| 欧美久久精品午夜青青大伊人| 欧美激情国产日韩精品一区18| 国产亚洲精品激情久久| 日韩第一页在线| 91久久久亚洲精品| 色噜噜亚洲精品中文字幕| 亚洲在线视频福利| 欧美性猛交xxxx乱大交| 欧美性xxxxx极品| 国产成人aa精品一区在线播放| 欧美理论片在线观看| 欧美与黑人午夜性猛交久久久| 亚洲国产成人精品一区二区| 亚洲精品xxxx| 九九九热精品免费视频观看网站| 亚洲石原莉奈一区二区在线观看| 日韩精品免费在线播放| 欧美色另类天堂2015| 久久99久久亚洲国产| 久久久久女教师免费一区| 亚洲欧美日韩精品久久| 98精品在线视频| 日韩成人xxxx| 国产丝袜一区二区三区免费视频| 国产精品一区二区3区| 综合网中文字幕| 久久天天躁狠狠躁夜夜av| 国产精品日韩欧美| 亚洲缚视频在线观看| 日韩电视剧免费观看网站| 91精品国产综合久久香蕉922| 亚洲丁香久久久| 国模视频一区二区三区| 日韩成人av一区| 色系列之999| 国产三级精品网站| 日韩欧美在线中文字幕| 91久久综合亚洲鲁鲁五月天| 欧美午夜www高清视频| 国模叶桐国产精品一区| 日韩欧美精品在线观看| 欧美午夜精品在线| 91精品国产自产在线| 国产一区二区三区在线观看视频| 精品久久久一区二区| 欧美一性一乱一交一视频| 国产精品久久二区| 69久久夜色精品国产7777| 亚洲一区二区中文字幕| 色中色综合影院手机版在线观看| 日韩精品在线第一页| 日韩av中文字幕在线播放| 欧美激情久久久| 欧美成人精品激情在线观看| 国产精品美女www爽爽爽视频| 久久精品亚洲精品| 亚洲va久久久噜噜噜| 亚洲剧情一区二区| 亚洲性日韩精品一区二区| 久久人人爽亚洲精品天堂| 日本精品免费一区二区三区| 色综合视频一区中文字幕| 亚洲老板91色精品久久| 日韩欧美中文字幕在线观看| 夜夜狂射影院欧美极品| 午夜精品福利在线观看| 欧美成人精品在线| 欧美精品videos性欧美| 国产专区精品视频| 北条麻妃久久精品| 69久久夜色精品国产69| 日韩视频免费中文字幕| 国产999在线| 国产精品国产三级国产aⅴ浪潮| 日韩欧美国产成人| 亚洲第一视频网| 亚洲а∨天堂久久精品喷水| 国产一区二区丝袜| 亚洲欧美一区二区精品久久久| 日本一欧美一欧美一亚洲视频|