歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 關於亂碼的種種問題

關於亂碼的種種問題

日期:2017/3/1 17:02:50   编辑:關於Linux
關於亂碼的種種問題 大家都知道亂碼就是字符集設置問題,所以我們需要清楚關於字符集的幾個概念。 www.2cto.com GB2312:早期的中文字符集國標,字庫很小,不建議使用。 GBK:微軟為彌補gb2312的不足搞出來的大字符集,是gb2312的超集,也是windows默認的字符集,幾乎是事實標准。 GB18030:大字符集的國標,比GBK多一些字,但在編碼定義上與GBK有少許不同,一般可以認為他們是兼容的。 IBM-eucCN:IBM的中文字符集,AIX默認,與GBK基本兼容,但字要少一點。 UTF8:最全的字符集,用這個任何生僻字都可以處理,推薦使用。 CP936:Code Page 936,windows內中文語言的代碼頁,早期被映射到gb2312,現在被映射到gbk。 下面我們以編輯一個utf8文件為例,說明跟字符集設置相關的因素。 要處理utf8文件,那麼在讀寫的所有環節我們都應該使用utf8,避免程序自動轉碼出現亂碼。 1、設置當前環境字符集為UTF8 首先使用locale charmap命令檢查當前字符集。如果不是utf8則用locale -a列出系統當前可用字符集,找到包含utf8的那一項,例如ZH_CN.UTF-8,然後export LANG=ZH_CN.UTF-8 修改LANG的環境(注意區分大小寫),然後用locale charmap命令再次檢查,多數情況下這樣就ok了。 如果字符集沒有改過來或變成了其他的,使用locale命令檢查詳細的語言設置,這時會發現LC_ 開頭的一些環境變量不是utf8,手工unset或export為utf8. www.2cto.com 2、設置終端軟件的字符集 a) Putty: window → Translation → Remote character set 改為 UTF-8,也可以保存在session裡面。 b) Xshell:Terminal → Translation → Encoding 改為 UTF-8,也可以通過工具欄上的 Encoding 圖標快速切換, 推薦大家使用xshell作為終端。 c) SecureCRT:Terminal → Appearance → character encoding 改為UTF-8. 這時我們已經可以通過cat查看utf8文件或者通過 cat > testfile 寫入utf8數據到文件裡面。 但如果通過vim編輯,還需要修改vim的環境變量。 3、VIM的設置 vim ~/.vimrc ,設置 set fileencodings=utf-8 (指定vim以utf8編碼打開文件) 和 set encoding=utf-8 (指定vim以utf8編碼輸出到終端) 這樣我們就可以使用vim編輯utf8文件了,其他字符集也與這類似。但是每次修改這些比較麻煩,如果不包含生僻字,我們可以用iconv -f utf8 -t gb18030 filename 將utf8文件轉換成gb18030處理。
Copyright © Linux教程網 All Rights Reserved