欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Linux中文亂碼問(wèn)題終極解決方法

 更新時(shí)間:2016年11月05日 11:30:31   作者:h2z  
本篇文章主要主要介紹了詳解Linux中文亂碼問(wèn)題終極解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。

初入linux的程序員們,經(jīng)常會(huì)受到亂碼的問(wèn)候??芍^“始亂終棄”。因?yàn)閬y碼,并且最終放棄了linux的不在少數(shù)。好吧,言歸正傳,下面來(lái)看一下linux亂碼的具體解決辦法吧。

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

該文件在用戶目錄下,對(duì)于其他用戶,也必須相應(yīng)修改該文件。

使用該方法時(shí)putty能顯示中文,但桌面系統(tǒng)是英文,而且所有的網(wǎng)頁(yè)中文顯示還是亂碼

方法二:
修改/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中文亂碼問(wèn)題

最近,公司在XP系統(tǒng)于LINUX之間傳數(shù)據(jù)時(shí)出現(xiàn)了中文亂碼問(wèn)題!

首先,字符集:

漢字編碼:

* GB2312字集是簡(jiǎn)體字集,全稱為GB2312(80)字集,共包括國(guó)標(biāo)簡(jiǎn)體漢字6763個(gè)。 * BIG5字集是臺(tái)灣繁體字集,共包括國(guó)標(biāo)繁體漢字13053個(gè)。 * GBK字集是簡(jiǎn)繁字集,包括了GB字集、BIG5字集和一些符號(hào),共包括21003個(gè)字符。 * GB18030是國(guó)家制定的一個(gè)強(qiáng)制性大字集標(biāo)準(zhǔn),全稱為GB18030-2000,它的推出使?jié)h字集有了一個(gè)“大一統(tǒng)”的標(biāo)準(zhǔn)。

ASCII:

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

偶校驗(yàn)規(guī)定:正確的代碼一個(gè)字節(jié)中1的個(gè)數(shù)必須是偶數(shù),若非偶數(shù),則在最高位b7添1。

UTF:
Unicode 的實(shí)現(xiàn)方式不同于編碼方式。 一個(gè)字符的Unicode編碼是確定的,但是在實(shí)際傳輸過(guò)程中,由于不同系統(tǒng)平臺(tái)的設(shè)計(jì)不一定一致,以及出于節(jié)省空間的目的,對(duì)Unicode編碼的實(shí)現(xiàn) 方式有所不同。 Unicode的實(shí)現(xiàn)方式稱為Unicode轉(zhuǎn)換格式(Unicode Translation Format,簡(jiǎn)稱為 UTF)。 * UTF-8: 8bit變長(zhǎng)編碼,對(duì)于大多數(shù)常用字符集(ASCII中0~127字符)它只使用單字節(jié),而對(duì)其它常用字符(特別是朝鮮和漢語(yǔ)會(huì)意文字),它使用3字節(jié)。 * UTF-16: 16bit編碼,是變長(zhǎng)碼,大致相當(dāng)于20位編碼,值在0到0x10FFFF之間,基本上就是unicode編碼的實(shí)現(xiàn),與CPU字序有關(guān)。

注意:ASCII char (2) ;UTF-8 寬字符 wchar 4倍 。兼容性最好的編碼就是UTF-8! 畢竟GBK/GB2312是國(guó)內(nèi)的標(biāo)準(zhǔn),當(dāng)大量使用國(guó)外的開(kāi)源軟件時(shí),UTF-8才是編碼界最通用的語(yǔ)言。

在Linux中通過(guò)locale來(lái)設(shè)置程序運(yùn)行的不同語(yǔ)言環(huán)境,locale由ANSI C提供支持。locale的命名規(guī)則為<語(yǔ)言>_<地區(qū)>.<字符集編碼>,如zh_CN.UTF-8,zh代表中 文,CN代表大陸地區(qū),UTF-8表示字符集。

在locale環(huán)境中,有一組變量,代表國(guó)際化環(huán)境中的不同設(shè)置:

1. LC_COLLATE
定義該環(huán)境的排序和比較規(guī)則

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

3. LC_MONETARY
貨幣格式

4. LC_NUMERIC
非貨幣的數(shù)字顯示格式

5. LC_TIME
時(shí)間和日期格式

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

7. LANG
LC_*的默認(rèn)值,是最低級(jí)別的設(shè)置,如果LC_*沒(méi)有設(shè)置,則使用該值。類似于 LC_ALL。

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

例子:

設(shè)置前,使用默認(rèn)locale: 

代碼示例:

[root@ahlinux ~]# locale
LANG="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=

設(shè)置后,使用zh_CN.GDK中文locale:

代碼示例:

[root@ahlinux ~]# export LC_ALL=zh_CN.GBK
[root@ahlinux ~]# locale
LANG=zh_CN.UTF-8
LC_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"是系統(tǒng)默認(rèn)的locale,"POSIX"是"C"的別名。所以當(dāng)我們新安裝完一個(gè)系統(tǒng)時(shí),默認(rèn)的locale就是C或POSIX。
在Debian中安裝locales的方法如下:

  •  通過(guò)apt-get install locales命令安裝locales包
  • ·安裝完成locales包后,系統(tǒng)會(huì)自動(dòng)進(jìn)行l(wèi)ocale配置,你只要選擇所需的locale,可以多選。最后指定一個(gè)系統(tǒng)默認(rèn)的locale。這樣系統(tǒng)就會(huì)幫你自動(dòng)生成相應(yīng)的locale和配置好系統(tǒng)的locale。
  • 增加新的locale也很簡(jiǎn)單,用dpkp-reconfigure locales重新配置locale即可。
  • 我們也可手動(dòng)增加locale,只要把新的locale增加到/etc/locale.gen文件中,再運(yùn)行l(wèi)ocale-gen命令即可生成新的 locale。再通過(guò)設(shè)置上面介紹的LC_*變量就可設(shè)置系統(tǒng)的locale了。下是一個(gè)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 GBK
zh_CN.UTF-8 UTF-8

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

這里再介紹下如何設(shè)置環(huán)境變量的。

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

代碼示例:

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

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

修改 $HOME/.i18n 文件,如

代碼示例:

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

這樣就可以改變個(gè)人的界面語(yǔ)言,而不影響別的用戶

修改后的/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

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

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

代碼示例:

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

一定要知道Windows XP 是GB2312的編碼,如果你的服務(wù)器字符集不是這個(gè),估計(jì)就會(huì)是亂碼,所以要調(diào)整。

有些人在調(diào)整的時(shí)候,說(shuō)我改了系統(tǒng)環(huán)境變量,結(jié)果造成用戶內(nèi)容顯示亂碼,無(wú)非解決的方法就是兩個(gè):

1.用iconv轉(zhuǎn)化為目前的編碼

2.用你原來(lái)使用的編碼

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

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

前兩個(gè)方法很實(shí)用,我試驗(yàn)過(guò)。其他方法都是在網(wǎng)上搜到的,呵呵。。。

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

就是從數(shù)據(jù)庫(kù)中取出來(lái)時(shí),在存入linux的文件里時(shí),在字符流時(shí)制定編碼格式。代碼如下:

代碼示例:

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_profile
export lang=zh_CN
vi /etc/sysconfig/i18n
LANG="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"

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

1、console終端亂碼

在/etc/profile文件的最后一行添加如下內(nèi)容:

代碼示例:

export LC_ALL="zh_CN.GB18030"

2、xwindow終端亂碼

在/etc/sysconfig/i18n文件的最后一行添加如下內(nèi)容:

代碼示例:

export LC_ALL="zh_CN.GB18030"

亂碼分兩種情況:

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

代碼示例:

vi /etc/profile
export 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系統(tǒng)即可..

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

代碼示例:

vi /etc/sysconfig/i18n
LANG="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即可...

新發(fā)了臺(tái)linux虛擬機(jī),用VIM出現(xiàn)了中文亂碼問(wèn)題,查找了資料,解決方法:

vi /etc/sysconfig/i18n

將內(nèi)容改為 

代碼示例:

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終端就可以正常顯示了

其中,主要修改的內(nèi)容主要為zh_CN.GB18030,其中要注意VI個(gè)性的內(nèi)容為根目錄下,要注意權(quán)限。

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

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

斷開(kāi)重新連接。

附1,linux下中文亂 碼問(wèn)題解決方案。

從windows傳過(guò)來(lái)的文件拷到linux下是亂碼,俺們又想在linux下顯示中文,怎么辦呢?我們首先進(jìn)行測(cè)試,linux下的中文是否可以正常顯 示?答:yes. 所以問(wèn)題就比較明顯了,windows下拷過(guò)來(lái)的不能顯示,說(shuō)明windows下和linux下支持的格式是不相同的.
linux下一般是采用utf-8的編碼,而我們?cè)趙indows上編輯文件時(shí)是gb2312的編碼。所以導(dǎo)致中文編碼會(huì)亂碼。要更正這個(gè)問(wèn)題實(shí)際上很簡(jiǎn)單只要把文件轉(zhuǎn)換成utf-8編碼格式然后再導(dǎo)入就ok啦。

然后使用如下命令進(jìn)行轉(zhuǎn)換:

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

(-f 就是源編碼,-t 轉(zhuǎn)換目標(biāo)編碼,test.txt源文件,testutf8.txt生成目標(biāo)編碼文件)

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

默認(rèn)為utf8,如果想用其他編碼如GBK

手動(dòng)更改配置文件的命令:

shell> vi /etc/sysconfig/i18n

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

LANG="zh_CN.GBK"

保存并關(guān)閉,運(yùn)行下面的命令使配置生效:

shell> source /etc/sysconfig/i18n

將終端字符編碼顯示為簡(jiǎn)體中文:

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

添加下面這行:

代碼示例:

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

附2,解決Linux操作系統(tǒng)下Java的中文亂碼問(wèn)題 。

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

以下方法在fc6下測(cè)試通過(guò),假設(shè)用戶的jre路徑為 /usr/java/jdk1.6.0_03/jre/

代碼示例:

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

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

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

2.遠(yuǎn)程的locale一定要設(shè)置為L(zhǎng)ANG=zh_CN.UTF-8

修改/etc/profile

增加這一行

export LC_ALL=zh_CN.GBK

附3,SSH顯示中文亂碼問(wèn)題

1)、打開(kāi)/etc/sysconfig/i18n

設(shè)置為:

代碼示例:

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" 是必須的(如果你不想讓中文亂碼的話!!!)

其它的可以按照自已的需求來(lái)改變。

2)、打開(kāi)smb.conf

添加:

代碼示例:

display charset=cp936
unix charset=cp936
doc charset=cp936

相關(guān)文章

  • CentOS服務(wù)器環(huán)境下MySQL主從同步配置方法

    CentOS服務(wù)器環(huán)境下MySQL主從同步配置方法

    這篇文章主要介紹了CentOS服務(wù)器環(huán)境下MySQL主從同步配置方法,較為詳細(xì)的分析了CentOS服務(wù)器環(huán)境下MySQL主從同步的配置操作步驟、相關(guān)命令、使用方法與注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • Linux (Ubuntu 18.04) 下安裝vim編輯器的方法

    Linux (Ubuntu 18.04) 下安裝vim編輯器的方法

    這篇文章主要介紹了Linux (Ubuntu 18.04) 下安裝vim編輯器的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Linux 命令find之查找文件的示例

    Linux 命令find之查找文件的示例

    這篇文章主要介紹了Linux 命令find之查找文件的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • ubuntu系統(tǒng)中/etc/rc.local和/etc/init.d/rc.local的區(qū)別詳解

    ubuntu系統(tǒng)中/etc/rc.local和/etc/init.d/rc.local的區(qū)別詳解

    這篇文章主要給大家介紹了關(guān)于在ubuntu系統(tǒng)下/etc/rc.local和/etc/init.d/rc.local區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)需要的朋友們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-08-08
  • 解決vim語(yǔ)法高亮不起作用的方法

    解決vim語(yǔ)法高亮不起作用的方法

    這篇文章主要給大家介紹了如何解決vim語(yǔ)法高亮不起作用的方法,文章給大家介紹了多種解決的方法,大家可以根據(jù)需要看看是哪個(gè)方面的問(wèn)題,希望能對(duì)遇到這個(gè)問(wèn)題的朋友們有所幫助,下面來(lái)一起看看吧。
    2016-10-10
  • Linux多線程編程快速入門(mén)

    Linux多線程編程快速入門(mén)

    這篇文章主要介紹了Linux多線程編程快速入門(mén),涉及到了線程基本知識(shí),線程標(biāo)識(shí),線程創(chuàng)建,線程終止,管理線程的終止等相關(guān)內(nèi)容,小編覺(jué)得還是挺不錯(cuò)的,這里分享給大家,需要的朋友可以參考下
    2018-01-01
  • Ubuntu基礎(chǔ)教程之a(chǎn)pt-get命令

    Ubuntu基礎(chǔ)教程之a(chǎn)pt-get命令

    這篇文章主要給大家介紹了關(guān)于Ubuntu基礎(chǔ)教程之a(chǎn)pt-get命令的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Ubuntu系統(tǒng)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Centos5給/根分區(qū)擴(kuò)容

    Centos5給/根分區(qū)擴(kuò)容

    今天在調(diào)整VPS的時(shí)候發(fā)現(xiàn)自己的/分區(qū)的空間用光了.但是還剩下一個(gè)分區(qū)hda3沒(méi)動(dòng).于是乎.想調(diào)整到根下面去.但是由于本人新手一個(gè).又不太了解linux的分區(qū)機(jī)制.
    2010-06-06
  • Linux服務(wù)器安全需要注意到幾點(diǎn)事項(xiàng)小結(jié)

    Linux服務(wù)器安全需要注意到幾點(diǎn)事項(xiàng)小結(jié)

    Linux服務(wù)器安全是個(gè)很重要的問(wèn)題,這里簡(jiǎn)單的總結(jié)下linux服務(wù)器的設(shè)置技巧。
    2010-08-08
  • 詳解ubuntu雙系統(tǒng)啟動(dòng)時(shí)卡死解決辦法

    詳解ubuntu雙系統(tǒng)啟動(dòng)時(shí)卡死解決辦法

    這篇文章主要介紹了詳解ubuntu雙系統(tǒng)啟動(dòng)時(shí)卡死解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評(píng)論