最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php各種編碼集詳解和以及在什么情況下進(jìn)行使用

 更新時(shí)間:2011年09月11日 19:52:09   作者:  
字符是各種文字和符號(hào)的總稱,包括各國家文字、標(biāo)點(diǎn)符號(hào)、圖形符號(hào)、數(shù)字等。
字符集是多個(gè)字符的集合,字符集種類較多,每個(gè)字符集包含的字符個(gè)數(shù)不同,常見字符集名稱:ASCII字符集、GB2312字符集、BIG5字符集、 GB 18030字符集、Unicode字符集等。計(jì)算機(jī)要準(zhǔn)確的處理各種字符集文字,需要進(jìn)行字符編碼,以便計(jì)算機(jī)能夠識(shí)別和存儲(chǔ)各種文字。

中文文字?jǐn)?shù)目大,而且還分為簡體中文和繁體中文兩種不同書寫規(guī)則的文字,而計(jì)算機(jī)最初是按英語單字節(jié)字符設(shè)計(jì)的,因此,對(duì)中文字符進(jìn)行編碼,是中文信息交流的技術(shù)基礎(chǔ)。本文將按照字符集的時(shí)間順序討論幾種典型的字符集,選取幾種代表性的中文字符集,研究歷史由來、特點(diǎn)、技術(shù)特征。

  ASCII 字符集

  1.名稱的由來

  ASCII(American Standard Code for Information Interchange,美國信息互換標(biāo)準(zhǔn)代碼)是基于羅馬字母表的一套電腦編碼系統(tǒng)。

  2.特點(diǎn)

  它主要用于顯示現(xiàn)代英語和其他西歐語言。它是現(xiàn)今最通用的單字節(jié)編碼系統(tǒng),并等同于國際標(biāo)準(zhǔn)ISO 646。

  3.包含內(nèi)容

  控制字符:回車鍵、退格、換行鍵等。

  可顯示字符:英文大小寫字符、阿拉伯?dāng)?shù)字和西文符號(hào)

  4.技術(shù)特征

  7位(bits)表示一個(gè)字符,共128字符

  5.ASCII擴(kuò)展字符集

  7位編碼的字符集只能支持128個(gè)字符,為了表示更多的歐洲常用字符對(duì)ASCII進(jìn)行了擴(kuò)展,ASCII擴(kuò)展字符集使用8位(bits)表示一個(gè)字符,共256字符。

  ASCII擴(kuò)展字符集比ASCII字符集擴(kuò)充出來的符號(hào)包括表格符號(hào)、計(jì)算符號(hào)、希臘字母和特殊的拉丁符號(hào)。

  GB2312 字符集

  1.名稱的由來

  GB2312又稱為GB2312-80字符集,全稱為《信息交換用漢字編碼字符集·基本集》,由原中國國家標(biāo)準(zhǔn)總局發(fā)布,1981年5月1日實(shí)施。

  2.特點(diǎn)

  GB2312是中國國家標(biāo)準(zhǔn)的簡體中文字符集。它所收錄的漢字已經(jīng)覆蓋99.75%的使用頻率,基本滿足了漢字的計(jì)算機(jī)處理需要。在中國大陸和新加坡獲廣泛使用。

  3.包含內(nèi)容

  GB2312收錄簡化漢字及一般符號(hào)、序號(hào)、數(shù)字、拉丁字母、日文假名、希臘字母、俄文字母、漢語拼音符號(hào)、漢語注音字母,共 7445 個(gè)圖形字符。其中包括6763個(gè)漢字,其中一級(jí)漢字3755個(gè),二級(jí)漢字3008個(gè);包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西里爾字母在內(nèi)的682個(gè)全角字符。

  4.技術(shù)特征

  (1)分區(qū)表示:

  GB2312中對(duì)所收漢字進(jìn)行了“分區(qū)”處理,每區(qū)含有94個(gè)漢字/符號(hào)。這種表示方式也稱為區(qū)位碼。

  各區(qū)包含的字符如下:01-09區(qū)為特殊符號(hào);16-55區(qū)為一級(jí)漢字,按拼音排序;56-87區(qū)為二級(jí)漢字,按部首/筆畫排序;10-15區(qū)及88-94區(qū)則未有編碼。

  (2)雙字節(jié)表示

  兩個(gè)字節(jié)中前面的字節(jié)為第一字節(jié),后面的字節(jié)為第二字節(jié)。習(xí)慣上稱第一字節(jié)為“高字節(jié)” ,而稱第二字節(jié)為“低字節(jié)”。

  “高位字節(jié)”使用了0xA1-0xF7(把01-87區(qū)的區(qū)號(hào)加上0xA0),“低位字節(jié)”使用了0xA1-0xFE(把01-94加上0xA0)。

  5.編碼舉例

  以GB2312字符集的第一個(gè)漢字“啊”字為例,它的區(qū)號(hào)16,位號(hào)01,則區(qū)位碼是1601,在大多數(shù)計(jì)算機(jī)程序中,高字節(jié)和低字節(jié)分別加0xA0得到程序的漢字處理編碼0xB0A1。計(jì)算公式是:0xB0=0xA0+16, 0xA1=0xA0+1。

  BIG5 字符集

  1.名稱的由來

  又稱大五碼或五大碼,1984年由臺(tái)灣財(cái)團(tuán)法人信息工業(yè)策進(jìn)會(huì)和五間軟件公司宏碁 (Acer)、神通 (MiTAC)、佳佳、零壹 (Zero One)、大眾 (FIC)創(chuàng)立,故稱大五碼。

  Big5碼的產(chǎn)生,是因?yàn)楫?dāng)時(shí)臺(tái)灣不同廠商各自推出不同的編碼,如倚天碼、IBM PS55、王安碼等,彼此不能兼容;另一方面,臺(tái)灣政府當(dāng)時(shí)尚未推出官方的漢字編碼,而中國大陸的GB2312編碼亦未有收錄繁體中文字。

  2.特點(diǎn)

  Big5字符集共收錄13,053個(gè)中文字,該字符集在中國臺(tái)灣使用。耐人尋味的是該字符集重復(fù)地收錄了兩個(gè)相同的字:“?!?0xA461及0xC94A)、“嗀”(0xDCD1及0xDDFC)。

  3.字符編碼方法

  Big5碼使用了雙字節(jié)儲(chǔ)存方法,以兩個(gè)字節(jié)來編碼一個(gè)字。第一個(gè)字節(jié)稱為“高位字節(jié)”,第二個(gè)字節(jié)稱為“低位字節(jié)”。高位字節(jié)的編碼范圍0xA1-0xF9,低位字節(jié)的編碼范圍0x40-0x7E及0xA1-0xFE。

  各編碼范圍對(duì)應(yīng)的字符類型如下:0xA140-0xA3BF為標(biāo)點(diǎn)符號(hào)、希臘字母及特殊符號(hào),另外于0xA259-0xA261,存放了雙音節(jié)度量衡單位用字:兙兛兞兝兡兣嗧瓩糎;0xA440-0xC67E為常用漢字,先按筆劃再按部首排序;0xC940-0xF9D5為次常用漢字,亦是先按筆劃再按部首排序。

  4.Big5 的局限性

  盡管Big5碼內(nèi)包含一萬多個(gè)字符,但是沒有考慮社會(huì)上流通的人名、地名用字、方言用字、化學(xué)及生物科等用字,沒有包含日文平假名及片假名字母。

  例如臺(tái)灣視“著”為“著”的異體字,故沒有收錄“著”字??滴踝值渲械囊恍┎渴子米?如“亠”、“疒”、“辵”、“癶”等)、常見的人名用字(如“堃”、“煊”、“栢”、“喆”等) 也沒有收錄到Big5之中。

  GB18030 字符集

  1.名稱的由來

  GB 18030的全稱是GB18030-2000《信息交換用漢字編碼字符集基本集的擴(kuò)充》,是我國政府于2000年3月17日發(fā)布的新的漢字編碼國家標(biāo)準(zhǔn),2001年8月31日后在中國市場上發(fā)布的軟件必須符合本標(biāo)準(zhǔn)

  2.特點(diǎn)

  GB 18030字符集標(biāo)準(zhǔn)的出臺(tái)經(jīng)過廣泛參與和論證,來自國內(nèi)外知名信息技術(shù)行業(yè)的公司,信息產(chǎn)業(yè)部和原國家質(zhì)量技術(shù)監(jiān)督局聯(lián)合實(shí)施。

  GB 18030字符集標(biāo)準(zhǔn)解決漢字、日文假名、朝鮮語和中國少數(shù)民族文字組成的大字符集計(jì)算機(jī)編碼問題。該標(biāo)準(zhǔn)的字符總編碼空間超過150萬個(gè)編碼位,收錄了27484個(gè)漢字,覆蓋中文、日文、朝鮮語和中國少數(shù)民族文字。滿足中國大陸、香港、臺(tái)灣、日本和韓國等東亞地區(qū)信息交換多文種、大字量、多用途、統(tǒng)一編碼格式的要求。并且與Unicode 3.0版本兼容,填補(bǔ)Unicode擴(kuò)展字符字匯“統(tǒng)一漢字?jǐn)U展A”的內(nèi)容。并且與以前的國家字符編碼標(biāo)準(zhǔn)(GB2312,GB13000.1)兼容。

  3.編碼方法

  GB 18030標(biāo)準(zhǔn)采用單字節(jié)、雙字節(jié)和四字節(jié)三種方式對(duì)字符編碼。單字節(jié)部分使用0×00至0×7F碼(對(duì)應(yīng)于ASCII碼的相應(yīng)碼)。雙字節(jié)部分,首字節(jié)碼從0×81至0×FE,尾字節(jié)碼位分別是0×40至0×7E和0×80至0×FE。四字節(jié)部分采用GB/T 11383未采用的0×30到0×39作為對(duì)雙字節(jié)編碼擴(kuò)充的后綴,這樣擴(kuò)充的四字節(jié)編碼,其范圍為0×81308130到0×FE39FE39。其中第一、三個(gè)字節(jié)編碼碼位均為0×81至0×FE,第二、四個(gè)字節(jié)編碼碼位均為0×30至0×39。

  4.包含的內(nèi)容

  雙字節(jié)部分收錄內(nèi)容主要包括GB13000.1全部CJK漢字20902個(gè)、有關(guān)標(biāo)點(diǎn)符號(hào)、表意文字描述符13個(gè)、增補(bǔ)的漢字和部首/構(gòu)件80個(gè)、雙字節(jié)編碼的歐元符號(hào)等。  四字節(jié)部分收錄了上述雙字節(jié)字符之外的,包括CJK統(tǒng)一漢字?jǐn)U充A在內(nèi)的GB 13000.1中的全部字符。

  Unicode字符集

  1.名稱的由來

  Unicode字符集編碼是Universal Multiple-Octet Coded Character Set 通用多八位編碼字符集的簡稱,是由一個(gè)名為 Unicode 學(xué)術(shù)學(xué)會(huì)(Unicode Consortium)的機(jī)構(gòu)制訂的字符編碼系統(tǒng),支持現(xiàn)今世界各種不同語言的書面文本的交換、處理及顯示。該編碼于1990年開始研發(fā),1994年正式公布,最新版本是2005年3月31日的Unicode 4.1.0。

  2.特征

  Unicode是一種在計(jì)算機(jī)上使用的字符編碼。它為每種語言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,以滿足跨語言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求。

  3.編碼方法

  Unicode 標(biāo)準(zhǔn)始終使用十六進(jìn)制數(shù)字,而且在書寫時(shí)在前面加上前綴“U+”,例如字母“A”的編碼為 004116 和字符“?”的編碼為 20AC16。所以“A”的編碼書寫為“U+0041”。

  4.UTF-8 編碼

  UTF-8是Unicode的其中一個(gè)使用方式。 UTF是 Unicode Translation Format,即把Unicode轉(zhuǎn)做某種格式的意思。

  UTF-8便于不同的計(jì)算機(jī)之間使用網(wǎng)絡(luò)傳輸不同語言和編碼的文字,使得雙字節(jié)的Unicode能夠在現(xiàn)存的處理單字節(jié)的系統(tǒng)上正確傳輸。

  UTF-8使用可變長度字節(jié)來儲(chǔ)存 Unicode字符,例如ASCII字母繼續(xù)使用1字節(jié)儲(chǔ)存,重音文字、希臘字母或西里爾字母等使用2字節(jié)來儲(chǔ)存,而常用的漢字就要使用3字節(jié)。輔助平面字符則使用4字節(jié)。

  5.UTF-16 和 UTF-32 編碼

  UTF-32、UTF-16 和 UTF-8 是 Unicode 標(biāo)準(zhǔn)的編碼字符集的字符編碼方案,UTF-16 使用一個(gè)或兩個(gè)未分配的 16 位代碼單元的序列對(duì) Unicode 代碼點(diǎn)進(jìn)行編碼;UTF-32 即將每一個(gè) Unicode 代碼點(diǎn)表示為相同值的 32 位整數(shù)。

  php 各種應(yīng)用亂碼問題的解決方法

  1) 使用 標(biāo)簽設(shè)置頁面編碼

  這個(gè)標(biāo)簽的作用是聲明客戶端的瀏覽器用什么字符集編碼顯示該頁面,xxx 可以為 GB2312、GBK、UTF-8(和 MySQL 不同,MySQL 是 UTF8)等等。因此,大部分頁面可以采用這種方式來告訴瀏覽器顯示這個(gè)頁面的時(shí)候采用什么編碼,這樣才不會(huì)造成編碼錯(cuò)誤而產(chǎn)生亂碼。但是有的時(shí)候我們會(huì)發(fā)現(xiàn)有了這句還是不行,不管 xxx 是哪一種,瀏覽器采用的始終都是一種編碼,這個(gè)情況我后面會(huì)談到。

  請(qǐng)注意, 是屬于 HTML 信息的,僅僅是一個(gè)聲明,僅表明服務(wù)器已經(jīng)把 HTML 信息傳到了瀏覽器。

  2) header("content-type:text/html; charset=xxx");

  這個(gè)函數(shù) header() 的作用是把括號(hào)里面的信息發(fā)到 http 標(biāo)頭。如果括號(hào)里面的內(nèi)容為文中所說那樣,那作用和 標(biāo)簽基本相同,大家對(duì)照第一個(gè)看發(fā)現(xiàn)字符都差不多的。但是不同的是如果有這段函數(shù),瀏覽器就會(huì)永遠(yuǎn)采用你所要求的 xxx 編碼,絕對(duì)不會(huì)不聽話,因此這個(gè)函數(shù)是很有用的。為什么會(huì)這樣呢?那就得說說 http 標(biāo)頭和 HTML信息的差別了:

  http 標(biāo)頭是服務(wù)器以 http 協(xié)議傳送 HTML 信息到瀏覽器前所送出的字串。而 標(biāo)簽是屬于 HTML 信息的,所以 header() 發(fā)送的內(nèi)容先到達(dá)瀏覽器,通俗點(diǎn)就是 header() 的優(yōu)先級(jí)高于 (不知道可不可以這樣講)。假如一個(gè) php 頁面既有header("content-type:text/html;charset=xxx"),又有,瀏覽器就只認(rèn)前者 http 標(biāo)頭而不認(rèn) meta 了。當(dāng)然這個(gè)函數(shù)只能在 php 頁面內(nèi)使用。

  同樣也留有一個(gè)問題,為什么前者就絕對(duì)起作用,而后者有時(shí)候就不行呢?這就是接下來要談的Apache 的原因了。

  3) AddDefaultCharset

  Apache 根目錄的 conf 文件夾里,有整個(gè) Apache 的配置文檔 httpd.conf。

  用文本編輯器打開 httpd.conf,第 708 行(不同版本可能不同)有 AddDefaultCharset xxx,xxx為編碼名稱。這行代碼的意思:設(shè)置整個(gè)服務(wù)器內(nèi)的網(wǎng)頁文件 http 標(biāo)頭里的字符集為你默認(rèn)的 xxx字符集。有這行,就相當(dāng)于給每個(gè)文件都加了一行 header("content-type:text/html; charset=xxx")。這下就明白為什么明明 設(shè)置了是 utf-8,可瀏覽器始終采用 gb2312 的原因。

  如果網(wǎng)頁里有 header("content-type:text/html; charset=xxx"),就把默認(rèn)的字符集改為你設(shè)置的字符集,所以這個(gè)函數(shù)永遠(yuǎn)有用。如果把 AddDefaultCharset xxx 前面加個(gè)"#",注釋掉這句,而且頁面里不含 header("content-type…"),那這個(gè)時(shí)候就輪到 meta 標(biāo)簽起作用了。

  下面列出以上的優(yōu)先順序:

  header("content-type:text/html; charset=xxx")

  .. AddDefaultCharset xxx

  ..

  如果你是 web 程序員,建議給你的每個(gè)頁面都加個(gè)header("content-type:text/html;charset=xxx"),這樣就可以保證它在任何服務(wù)器都能正確顯示,可移植性也比較強(qiáng)。

  4) php.ini 中的 default_charset 配置:

  php.ini 中的 default_charset = "gb2312" 定義了 php 的默認(rèn)語言字符集。一般推薦注釋掉此行,讓瀏覽器根據(jù)網(wǎng)頁頭中的 charset 來自動(dòng)選擇語言而非做一個(gè)強(qiáng)制性的規(guī)定,這樣就可以在同臺(tái)服務(wù)器上提供多種語言的網(wǎng)頁服務(wù)。

相關(guān)文章

  • php中關(guān)于hook鉤子函數(shù)底層理解

    php中關(guān)于hook鉤子函數(shù)底層理解

    對(duì)"鉤子"這個(gè)概念其實(shí)不熟悉,最近看到一個(gè)php框架中用到這種機(jī)制來擴(kuò)展項(xiàng)目,所以大概來了解下。 所謂Hook機(jī)制,是從Windows編程中流行開的一種技術(shù)
    2023-01-01
  • Yii PHP Framework實(shí)用入門教程(詳細(xì)介紹)

    Yii PHP Framework實(shí)用入門教程(詳細(xì)介紹)

    本篇文章是對(duì)Yii PHP Framework實(shí)用入門教程進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php bugs代碼審計(jì)基礎(chǔ)詳解

    php bugs代碼審計(jì)基礎(chǔ)詳解

    代碼審計(jì)不會(huì),學(xué)習(xí)知識(shí)需要積累一下基礎(chǔ),因此來搭建php_bugs進(jìn)行相關(guān)學(xué)習(xí),題解如下,希望能對(duì)在學(xué)習(xí)代碼審計(jì)的同學(xué)們有所幫助
    2022-11-11
  • PHP常見錯(cuò)誤提示含義解釋(實(shí)用!值得收藏)

    PHP常見錯(cuò)誤提示含義解釋(實(shí)用!值得收藏)

    這篇文章主要介紹了PHP常見錯(cuò)誤提示含義解釋,包含了各種常見的PHP錯(cuò)誤提示及具體含義,便于查詢參考,需要的朋友可以參考下
    2016-04-04
  • php INI配置文件的解析實(shí)現(xiàn)分析

    php INI配置文件的解析實(shí)現(xiàn)分析

    我不知道怎么說才好,因?yàn)槲以谧xINI文件的時(shí)候,往往都是用現(xiàn)成的函數(shù):parse_ini_file或者是parse_ini_string,但怎么寫入,就是另外的方法了(自己實(shí)現(xiàn)。。。。)
    2011-01-01
  • PHP經(jīng)典的給圖片加水印程序

    PHP經(jīng)典的給圖片加水印程序

    PHP經(jīng)典的給圖片加水印程序...
    2006-12-12
  • PHP自動(dòng)生成表單代碼分享

    PHP自動(dòng)生成表單代碼分享

    在PHP開發(fā)過程中,我們有時(shí)候會(huì)遇到表單不固定的情況,需要在程序運(yùn)行過程中動(dòng)態(tài)生成,這里分享一個(gè)PHP自動(dòng)創(chuàng)建表單的類給大家
    2015-06-06
  • 掌握PHP垃圾回收機(jī)制詳解

    掌握PHP垃圾回收機(jī)制詳解

    這篇文章主要介紹了PHP垃圾回收機(jī)制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 修改PHP的memory_limit限制的方法分享

    修改PHP的memory_limit限制的方法分享

    在運(yùn)行PHP程序,通常會(huì)遇到“Fatal Error: Allowed memory size of xxxxxx bytes exhausted”的錯(cuò)誤, 這個(gè)意味著PHP腳本使用了過多的內(nèi)存,并超出了系統(tǒng)對(duì)其設(shè)置的允許最大內(nèi)存
    2012-02-02
  • 提升PHP性能的21種方法介紹

    提升PHP性能的21種方法介紹

    本篇文章是對(duì)提升PHP性能的21種方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評(píng)論

甘德县| 尚志市| 山阴县| 买车| 新泰市| 德化县| 潮州市| 厦门市| 武乡县| 泸西县| 安化县| 车险| 安龙县| 黔东| 乐安县| 刚察县| 海宁市| 皋兰县| 昌平区| 辽宁省| 河曲县| 图片| 清水河县| 嘉善县| 开平市| 同仁县| 花莲市| 墨江| 宁城县| 南投市| 大姚县| 旺苍县| 湖南省| 温州市| 米林县| 萨嘎县| 田东县| 包头市| 大冶市| 紫阳县| 浙江省|