新聞中心
亂碼產(chǎn)生的原因:
計算機中儲存的信息都是用二進制數(shù)表示的;而我們在屏幕上看到的英文、漢字等字符是二進制數(shù)轉(zhuǎn)換之后的結(jié)果。通俗的說,按照何種規(guī)則將字符存儲在計算機中,如'a'用什么表示,稱為"編碼";反之,將存儲在計算機中的二進制數(shù)解析顯示出來,稱為"解碼",如同密碼學(xué)中的加密和解密。在解碼過程中,如果使用了錯誤的解碼規(guī)則,則導(dǎo)致'a'解析成'b'或者亂碼。

創(chuàng)新互聯(lián)公司是專業(yè)的固原網(wǎng)站建設(shè)公司,固原接單;提供成都網(wǎng)站設(shè)計、網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行固原網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
字符集(Charset):是一個系統(tǒng)支持的所有抽象字符的集合。字符是各種文字和符號的總稱,包括各國家文字、標(biāo)點符號、圖形符號、數(shù)字等。
字符編碼(Character Encoding):是一套法則,使用該法則能夠?qū)ψ匀徽Z言的字符的一個集合(如字母表或音節(jié)表),與其他東西的一個集合(如號碼或電脈沖)進行配對。即在符號集合與數(shù)字系統(tǒng)之間建立對應(yīng)關(guān)系,它是信息處理的一項基本技術(shù)。通常人們用符號集合(一般情況下就是文字)來表達信息。而以計算機為基礎(chǔ)的信息處理系統(tǒng)則是利用元件(硬件)不同狀態(tài)的組合來存儲和處理信息的。元件不同狀態(tài)的組合能代表數(shù)字系統(tǒng)的數(shù)字,因此字符編碼就是將符號轉(zhuǎn)換為計算機可以接受的數(shù)字系統(tǒng)的數(shù),稱為數(shù)字代碼。
UTF-8:
-
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼(定長碼),也是一種前綴碼。它可以用來表示Unicode標(biāo)準(zhǔn)中的任何字符,且其編碼中的第一個字節(jié)仍與ASCII兼容,這使得原來處理ASCII字符的軟件無須或只須做少部份修改,即可繼續(xù)使用。因此,它逐漸成為電子郵件、網(wǎng)頁及其他存儲或傳送文字的應(yīng)用中,優(yōu)先采用的編碼。互聯(lián)網(wǎng)工程工作小組(IETF)要求所有互聯(lián)網(wǎng)協(xié)議都必須支持UTF-8編碼。
UTF-8使用一至四個字節(jié)為每個字符編碼:
- 128個US-ASCII字符只需一個字節(jié)編碼(Unicode范圍由U+0000至U+007F)。
- 帶有附加符號的拉丁文、希臘文、西里爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文及它拿字母則需要二個字節(jié)編碼(Unicode范圍由U+0080至U+07FF)。
- 其他基本多文種平面(BMP)中的字符(這包含了大部分常用字)使用三個字節(jié)編碼。
- 其他極少使用的Unicode輔助平面的字符使用四字節(jié)編碼。
在處理經(jīng)常會用到的ASCII字符方面非常有效。在處理擴展的拉丁字符集方面也不比UTF-16差。對于中文字符來說,比UTF-32要好。同時,(在這一條上你得相信我,因為我不打算給你展示它的數(shù)學(xué)原理。)由位操作的天性使然,使用UTF-8不再存在字節(jié)順序的問題了。一份以utf-8編碼的文檔在不同的計算機之間是一樣的比特流。
總體來說,在Unicode字符串中不可能由碼點數(shù)量決定顯示它所需要的長度,或者顯示字符串之后在文本緩沖區(qū)中光標(biāo)應(yīng)該放置的位置;組合字符、變寬字體、不可打印字符和從右至左的文字都是其歸因。所以盡管在UTF-8字符串中字符數(shù)量與碼點數(shù)量的關(guān)系比UTF-32更為復(fù)雜,在實際中很少會遇到有不同的情形。
優(yōu)點
- UTF-8是ASCII的一個超集。因為一個純ASCII字符串也是一個合法的UTF-8字符串,所以現(xiàn)存的ASCII文本不需要轉(zhuǎn)換。為傳統(tǒng)的擴展ASCII字符集設(shè)計的軟件通??梢圆唤?jīng)修改或很少修改就能與UTF-8一起使用。
- 使用標(biāo)準(zhǔn)的面向字節(jié)的排序例程對UTF-8排序?qū)a(chǎn)生與基于Unicode代碼點排序相同的結(jié)果。(盡管這只有有限的有用性,因為在任何特定語言或文化下都不太可能有仍可接受的文字排列順序。)
- UTF-8和UTF-16都是可擴展標(biāo)記語言文檔的標(biāo)準(zhǔn)編碼。所有其它編碼都必須通過顯式或文本聲明來指定。
- 任何面向字節(jié)的字符串搜索算法都可以用于UTF-8的數(shù)據(jù)(只要輸入僅由完整的UTF-8字符組成)。但是,對于包含字符記數(shù)的正則表達式或其它結(jié)構(gòu)必須小心。
- UTF-8字符串可以由一個簡單的算法可靠地識別出來。就是,一個字符串在任何其它編碼中表現(xiàn)為合法的UTF-8的可能性很低,并隨字符串長度增長而減小。舉例說,字符值C0,C1,F5至FF從來沒有出現(xiàn)。為了更好的可靠性,可以使用正則表達式來統(tǒng)計非法過長和替代值(可以查看W3 FAQ: Multilingual Forms上的驗證UTF-8字符串的正則表達式)。
缺點
因為每個字符使用不同數(shù)量的字節(jié)編碼,所以尋找串中第N個字符是一個O(N)復(fù)雜度的操作 — 即,串越長,則需要更多的時間來定位特定的字符。同時,還需要位變換來把字符編碼成字節(jié),把字節(jié)解碼成字符。
配置字符集:
CentOS6.x 字符集配置文件在/etc/syscconfig/i18n;
CentOS7.x 字符集配置文件在/etc/locale.conf;
查看已經(jīng)安裝的語言包:
|
# locale -a aa_DJ ... ... |
安裝中文字符集:
CentOS6.x:
| #yum groupinstall chinese-support |
注意CentO S7與6不一樣;
|
#yum install kde-l10n-Chinese #yum reinstall glibc-common |
查看當(dāng)前的字符集:
方法一:
| # echo $LANG zh_CN.UTF-8 |
方法二:
| # locale LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8"# locale LANG=zh_CN.UTF-8 LC_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= 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"ENTIFICATION="zh_CN.UTF-8" LC_A |
安裝完成之后通過vi命令修改配置文件:
這個是由中文字符集改為英文字符集,沒辦法中文字符集還是存在亂碼問題;
| #vi /etc/locale.conf # LANG="zh_CN.UTF-8" LANG="en_US.UTF-8" |
改完后需要使用source命令是配置文件生效:
| #source /etc/locale.conf |
檢查:
|
# locale |
臨時改變字符集命令:
|
#LANG="想要使用的字符集" #LANG="LANG=en_US.UTF-8" |
也可以把字符集的環(huán)境變量寫到profile
| # vim /etc/profile |
注意這個需要利用#source /etc/profile使文件生效。
根據(jù)用戶設(shè)置字符集,需要更改用戶家目錄下的 .bash_profile ,在最后一行添加字符集就可以了
|
# vim .bash_profile LANG="LANG=en_US.UTF-8" |
使用遠程連接工具時注意把字符集調(diào)試成與系統(tǒng)字符集一致。
網(wǎng)頁名稱:CentOS7.5修改字符集
本文來源:http://m.fisionsoft.com.cn/article/dhhohge.html


咨詢
建站咨詢
