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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Linux下中文亂碼的解決方法其實亂碼這個問題是由系統集成的字符集引起的,由于不能正確的使用相對應字符的字符集,因此OS不能識別出文字導致了亂碼,解決的方法不難.????.首先,我們先要知道控制LinuxOS的語言環(huán)境變量是$LANG和$LC_ALL,要解決亂碼的情況我們只需要把上述的兩個變量正確設置即可.亂碼分兩種情況:終端(純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系統即可..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)境參數的變量,增加OS所支持的字符集(前提要內核上存在該字符,否則需要編譯內核)???正在開發(fā)的WEB系統是部署在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=因為程序目錄有若干文件要讀出來顯示在頁面上,文件名為中文名我使用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命令查看的時候,是亂碼,使用ls--show-control-chars命令就能顯示中文名(控制臺)添加locale,估計你的系統不支持gbk字符集。ubuntu下是vi/var/lib/locales/supported.d/local加完后locale-gen一下,重新刷新字符集緩存如果你需要在Linux中操作windows下的文件,那么你可能會經常遇到文件編碼轉換的問題。Windows中默認的文件格式是GBK(gb2312),而Linux—般都是UTF-8。下面介紹一下,在Linux中如何查看文件的編碼及如何進行對文件進行編碼轉換。一,查看文件編碼:在Linux中查看文件編碼可以通過以下幾種方式:1?在Vim中可以直接查■文件編碼:setfileencoding即可顯示文件編碼格式。如果你只是想查看其它編碼格式的文件或者想解決用Vim查看文件亂碼的問題,那么你可以在~/.vimrc文件中添加以下內容:setencoding=utf-8fileencodings=ucs-bom,utf-8,cp936這樣,就可以讓vim自動識別文件編碼(可以自動識別UTF-8或者GBK編碼的文件),其實就是依照fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ASCII)編碼打開。2.enca(如果你的系統中沒有安裝這個命令,可以用sudoyuminstall-yenca安裝)查看文件編碼$encafilenamefilename:Universaltransformationformat8bits;UTF-8CRLFlineterminators需要說明一點的是,enca對某些GBK編碼的文件識別的不是很好,識別時會出現:Unrecognizedencoding二,文件編碼轉換1?在Vim中直接進行轉換文件編碼,比如將一個文件轉換成utf-8格式:setfileencoding=utf-82.iconv轉換,iconv的命令格式如下:iconv-fencoding-tencodinginputfile比如將一個UTF-8編碼的文件轉換成GBK編碼iconv-fGBK-tUTF-8file1-ofile23.enconv轉換文件編碼比如要將一個GBK編碼的文件轉換成UTF-8編碼,操作如下enconv-Lzh_CN-xUTF-8filename三,文件名編碼轉換:從Linux往windows拷貝文件或者從windows往Linux拷貝文件,有時會出現中文文件名亂碼的情況,出現這種問題的原因是因為,windows的文件名中文編碼默認為GBK,而Linux中默認文件名編碼為UTF8,由于編碼不一致,所以導致了文件名亂碼的問題,解決這個問題需要對文件名進行轉碼。在Linux中專門提供了一種工具convmv進行文件名編碼的轉換,可以將文件名從GBK轉換成UTF-8編碼,或者從UTF-8轉換到GBK。首先看一下你的系統上是否安裝了convmv,如果沒安裝的話用:yum-yinstallconvmv安裝。下面看一下convmv的具體用法:convmv-f源編碼-t新編碼[選項]文件名常用參數:-r遞歸處理子文件夾-notest真正進行操作,青注意在默認情況下是不對文件進行真實操作的,而只是試驗。-list顯示所有支持的編碼-unescap可以做一下轉義,比如把%20變成空格比如我們有一個utf8編碼的文件名,轉換成GBK編碼,命令如下:

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

溫馨提示

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

評論

0/150

提交評論