linu下中文亂碼問題_第1頁
linu下中文亂碼問題_第2頁
linu下中文亂碼問題_第3頁
linu下中文亂碼問題_第4頁
linu下中文亂碼問題_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Linux下中文亂碼的解決方法其實(shí)亂碼這個(gè)問題是由系統(tǒng)集成的字符集引起的,由于不能正確的使用相對應(yīng)字符的字符集,因此OS不能識別出文字導(dǎo)致了亂碼,解決的方法不難.????.首先,我們先要知道控制LinuxOS的語言環(huán)境變量是$LANG和$LC_ALL,要解決亂碼的情況我們只需要把上述的兩個(gè)變量正確設(shè)置即可.亂碼分兩種情況:終端(純shell界面)的亂碼vi/etc/profileexportLC_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)即可..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即可...由于中文的字符集編碼很多,我自己也不是十分清楚彼此的兼容性如何,所以就盡可能的找了很多種不同的編碼都寫了上去,大家也可以自己篩選下,總的解決思路就是修改控制環(huán)境參數(shù)的變量,增加OS所支持的字符集(前提要內(nèi)核上存在該字符,否則需要編譯內(nèi)核)???正在開發(fā)的WEB系統(tǒng)是部署在REDHEAD。RH版本信息:LSBVersion: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarchDistributorID:RedHatEnterpriseServerDescription:RedHatEnterpriseLinuxServerrelease5(Tikanga)Release:5Codename:Tikangalocale信息LANG=zh_CN.UTF-8LC_CTYPE="zh_CN.UTF-8"LC_NUMERIC="zh_CN.UTF-8"LC_TIME="zh_CN.UTF-8"LC_COLLATE="zh_CN.UTF-8"LC_MONETARY="zh_CN.UTF-8"LC_MESSAGES="zh_CN.UTF-8"LC_PAPER="zh_CN.UTF-8"LC_NAME="zh_CN.UTF-8"LC_ADDRESS="zh_CN.UTF-8"LC_TELEPHONE="zh_CN.UTF-8"LC_MEASUREMENT="zh_CN.UTF-8"LC_IDENTIFICATION="zh_CN.UTF-8"LC_ALL=因?yàn)槌绦蚰夸浻腥舾晌募x出來顯示在頁面上,文件名為中文名我使用File.list()方法得到了文件名列表,可是顯示出來的都是亂碼。newString(filename.getBytes("utf-8"),"GBK");newString(filename.getBytes("iso-8859-1"),"GBK");newString(filename.getBytes(),GBK");都不起作用,使用System.getProperty("file.encoding")得出的是"utf-8"另外,使用ls命令查看的時(shí)候,是亂碼,使用ls--show-control-chars命令就能顯示中文名(控制臺)添加locale,估計(jì)你的系統(tǒng)不支持gbk字符集。ubuntu下是vi/var/lib/locales/supported.d/local加完后locale-gen一下,重新刷新字符集緩存如果你需要在Linux中操作windows下的文件,那么你可能會經(jīng)常遇到文件編碼轉(zhuǎn)換的問題。Windows中默認(rèn)的文件格式是GBK(gb2312),而Linux—般都是UTF-8。下面介紹一下,在Linux中如何查看文件的編碼及如何進(jìn)行對文件進(jìn)行編碼轉(zhuǎn)換。一,查看文件編碼:在Linux中查看文件編碼可以通過以下幾種方式:1?在Vim中可以直接查■文件編碼:setfileencoding即可顯示文件編碼格式。如果你只是想查看其它編碼格式的文件或者想解決用Vim查看文件亂碼的問題,那么你可以在~/.vimrc文件中添加以下內(nèi)容:setencoding=utf-8fileencodings=ucs-bom,utf-8,cp936這樣,就可以讓vim自動識別文件編碼(可以自動識別UTF-8或者GBK編碼的文件),其實(shí)就是依照fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ASCII)編碼打開。2.enca(如果你的系統(tǒng)中沒有安裝這個(gè)命令,可以用sudoyuminstall-yenca安裝)查看文件編碼$encafilenamefilename:Universaltransformationformat8bits;UTF-8CRLFlineterminators需要說明一點(diǎn)的是,enca對某些GBK編碼的文件識別的不是很好,識別時(shí)會出現(xiàn):Unrecognizedencoding二,文件編碼轉(zhuǎn)換1?在Vim中直接進(jìn)行轉(zhuǎn)換文件編碼,比如將一個(gè)文件轉(zhuǎn)換成utf-8格式:setfileencoding=utf-82.iconv轉(zhuǎn)換,iconv的命令格式如下:iconv-fencoding-tencodinginputfile比如將一個(gè)UTF-8編碼的文件轉(zhuǎn)換成GBK編碼iconv-fGBK-tUTF-8file1-ofile23.enconv轉(zhuǎn)換文件編碼比如要將一個(gè)GBK編碼的文件轉(zhuǎn)換成UTF-8編碼,操作如下enconv-Lzh_CN-xUTF-8filename三,文件名編碼轉(zhuǎn)換:從Linux往windows拷貝文件或者從windows往Linux拷貝文件,有時(shí)會出現(xiàn)中文文件名亂碼的情況,出現(xiàn)這種問題的原因是因?yàn)?,windows的文件名中文編碼默認(rèn)為GBK,而Linux中默認(rèn)文件名編碼為UTF8,由于編碼不一致,所以導(dǎo)致了文件名亂碼的問題,解決這個(gè)問題需要對文件名進(jìn)行轉(zhuǎn)碼。在Linux中專門提供了一種工具convmv進(jìn)行文件名編碼的轉(zhuǎn)換,可以將文件名從GBK轉(zhuǎn)換成UTF-8編碼,或者從UTF-8轉(zhuǎn)換到GBK。首先看一下你的系統(tǒng)上是否安裝了convmv,如果沒安裝的話用:yum-yinstallconvmv安裝。下面看一下convmv的具體用法:convmv-f源編碼-t新編碼[選項(xiàng)]文件名常用參數(shù):-r遞歸處理子文件夾-notest真正進(jìn)行操作,青注意在默認(rèn)情況下是不對文件進(jìn)行真實(shí)操作的,而只是試驗(yàn)。-list顯示所有支持的編碼-unescap可以做一下轉(zhuǎn)義,比如把%20變成空格比如我們有一個(gè)utf8編碼的文件名,轉(zhuǎn)換成GBK編碼,命令如下:

這樣轉(zhuǎn)換以后”utf8編碼的文件名”會被轉(zhuǎn)換成GBK編碼(只是文件名編碼的轉(zhuǎn)換,文件內(nèi)容不會發(fā)生變化)vim編碼方式的設(shè)置vim編碼方式的設(shè)置和所有的流行文本編輯器一樣,Vim可以很好的編輯各種字符編碼的文件,這當(dāng)然包括UCS-2、UTF-8等流行的Unicode編碼方式。然而不幸的是,和很多來自Linux世界的軟件一樣,這需要你自己動手設(shè)置。Vim有四個(gè)跟字符編碼方式有關(guān)的選項(xiàng),encoding、fileencoding、fileencodings、termencoding(這些選項(xiàng)可能的取值請參考Vim在線幫助:helpencoding-names),它們的意義如下:*encoding:Vim內(nèi)部使用的字符編碼方式,包括Vim的buffer(緩沖區(qū))、菜單文本、消息文本等。默認(rèn)是根據(jù)你的locale選擇.用戶手冊上建議只在.vimrc中改變它的值,事實(shí)上似乎也只有在.vimrc中改變它的值才有意義。你可以用另外一種編碼來編輯和保存文件,如你的vim的encoding為utf-8,所編輯的文件采用cp936編碼,vim會自動將讀入的文件轉(zhuǎn)成utf-8(vim的能讀懂的方式),而當(dāng)你寫入文件時(shí)又會自動轉(zhuǎn)回成cp936(文件的保存編碼).*fileencoding:Vim中當(dāng)前編輯的文件的字符編碼方式,Vim保存文件時(shí)也會將文件保存為這種字符編碼方式(不管是否新文件都如此)。*fileencodings:Vim自動探測fileencoding的順序列表,啟動時(shí)會按照它所列出的字符編碼方式逐一探測即將打開的文件的字符編碼方式,并且將fileencoding設(shè)置為最終探測到的字符編碼方式。因此最好將Unicode編碼方式放到這個(gè)列表的最前面,將拉丁語系編碼方式latin1放到最后面。*termencoding:Vim所工作的終端(或者Windows的Console窗口)的字符編碼方式。如果vim所在的term與vim編碼相同,則無需設(shè)置。如其不然,你可以用vim的termencoding選項(xiàng)將自動轉(zhuǎn)換成term的編碼.這個(gè)選項(xiàng)在Windows下對我們常用的GUI模式的gVim無效,而對Console模式的Vim而言就是Windows控制臺的代碼頁,并且通常我們不需要改變它。五,Vim的多字符編碼工作方式Vim啟動,根據(jù).vimrc中設(shè)置的encoding的值來設(shè)置buffer、菜單文本、消息文的字符編碼方式。讀取需要編輯的文件,根據(jù)fileencodings中列出的字符編碼方式逐一探測該文件編碼方式。并設(shè)置fileencoding為探測到的,看起來是正確的(注1)字符編碼方式。對比fileencoding和encoding的值,若不同則調(diào)用iconv將文件內(nèi)容轉(zhuǎn)換為encoding所描述的字符編碼方式并且把轉(zhuǎn)換后的內(nèi)容放到為此文件開辟的buffer里,此時(shí)我們就可以開始編輯這個(gè)文件了。注意,完成這一步動作需要調(diào)用外部的iconv.dll(注2),你需要保證這個(gè)文件存在于$VIMRUNTIME或者其他列在PATH環(huán)境變量中的目錄里。4.編輯完成后保存文件時(shí),再次對比fileencoding和encoding的值。若不同,再次調(diào)用iconv將即將保存的buffer中的文本轉(zhuǎn)換為fileencoding所描述的字符編碼方式,并保存到指定的文件中。同樣,這需要調(diào)用iconv.dll由于Unicode能夠包含幾乎所有的語言的字符,而且Unicode的UTF-8編碼方式又是非常具有性價(jià)比的編碼方式(空間消耗比UCS-2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論