<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                php.ini設置瀏覽器默認的字符集: ``` default_charset = "UTF-8" ``` 指定頁面編碼 ``` header("content-type;text/html;charset=UTF-8"); ``` 字符編碼優先級:由高--->低 ??????? 1.http消息報頭的Content-Type字段中的charset參數。 ??????? 2.通過meta元素聲明,將http-equiv設置成Content-Type。 ??????? 3.一些元素的charset屬性設置。 # **字符集轉換** # mb_detect_encoding:檢測字符編碼 # mb_detect_order:設置檢測字符的順序 ``` mb_detect_order('ASCII,ANSI,GB2312,BIG5,GBK,GB18030,Unicode,UTF-8,UTF-16,UTF-32'); //顯示當前的檢測順序? echo implode(", ", mb_detect_order()); ``` 該設置會影響?[mb_detect_encoding()](http://www.php.net/manual/zh/function.mb-detect-encoding.php)?和?[mb_send_mail()](http://www.php.net/manual/zh/function.mb-send-mail.php) 只能檢測;*UTF-8*,?*UTF-7*,?*ASCII*,?*EUC-JP*,*SJIS*,?*eucJP-win*,?*SJIS-win*,?*JIS*,?*ISO-2022-JP* 對于?*UTF-16*、*UTF-32*、?*UCS2*?和?*UCS4*,編碼檢測總是會失敗。 對于?*ISO-8859-\**,*mbstring*?總是檢測為?*ISO-8859-\**。 # [mb_internal_encoding()](http://www.php.net/manual/zh/function.mb-internal-encoding.php)?- 設置/獲取內部字符編碼 # [mb_http_input()](http://www.php.net/manual/zh/function.mb-http-input.php)?- 檢測 HTTP 輸入字符編碼 # [mb_http_output()](http://www.php.net/manual/zh/function.mb-http-output.php)?- 設置/獲取 HTTP 輸出字符編碼 # [mb_send_mail()](http://www.php.net/manual/zh/function.mb-send-mail.php)?- 發送編碼過的郵件 總是檢測為 ISO-8859-1的情況:? ?detect\_order = ISO-8859-1, UTF-8 總是檢測為 UTF-8,由于 ASCII/UTF-7 的值對 UTF-8 是有效的:detect\_order = UTF-8, ASCII, UTF-7 例子: ``` function getEncoding($data) { return mb_detect_encoding($data, mb_detect_order()); } $str='username'; $encoding=getEncoding($str); $str=iconv($encoding, 'UTF-8', $str); ``` **中文字符編碼標準** **GB2312**,**CP936**,**GBK**,**GB18030**,**GB13000** 在技術編碼方面上,演化順序為真子集關系,ASCII ? GB2312 ? GBK ? GB18030。 字符集:為每一個「字符」分配一個唯一的 ID(學名為碼位 / 碼點 / Code Point) 編碼規則:將「碼位」轉換為字節序列的規則(編碼/解碼 可以理解為 加密/解密 的過程) 廣義的 Unicode 是一個標準,定義了一個字符集以及一系列的編碼規則,即 Unicode 字符集和 UTF-8、UTF-16、UTF-32 等等編碼…… Unicode 字符集為每一個字符分配一個碼位,例如「知」的碼位是 30693,記作 U+77E5(30693 的十六進制為 0x77E5)。 | 編碼 | 描述 |在window中的代碼頁(Code Page) ,也可叫別名| 標準所屬 | | --- | --- | --- | --- | | **ASCII** | 單字節編碼(1字節 = 8 bit 即最多可以表示255 個字符)包含英文大小寫字母和(! @ #等)特殊符號,如大寫字母`U`就表示成`01010101` | --- | 國際通用 | | GB2312 | 二個字節編碼; 1980年,中國制定了GB2312-80,一共收錄了**7445個字符**,包括6763個簡體漢字(不含繁體)和包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西里爾字母在內的682個全角字符。GB2312-80,簡稱為GB2312 | window以前的CP936 | 中國大陸 | | Unicode 1.1 | 1993年,國際標準**Unicode 1.1**版本推出,收錄中國大陸、臺灣、日本及韓國通用字符集的漢字,總共有**20,902個字符**。 | --- | 國際通用 | | GB13000 | 中國大陸訂定了等同于Unicode 1.1版本的“GB 13000.1-93”,簡稱為GB13000 。包含的GB2312已有的文字和其他很多為包含的文字(總共有**20,902個**),如GB 2312-80推出以后才簡化的漢字(如“啰”),部分人名用字(如中國前總理朱镕基的“镕”字),臺灣及香港使用的繁體字,日語及朝鮮語漢字等 | --- (使用UTF的一套標準) | 中國大陸 | | GBK | GBK作為微軟對GB2312的擴展,即利用GB 2312-80未使用的編碼空間,收錄所有的GB 13000.1-93和Unicode 1.1之中的漢字全部字符,制定了GBK編碼。GBK收錄了**21886個字符**,它分為漢字區和圖形符號區。漢字區包括21003個字符;GBK兼容舊的GB2312,但是編碼方式和GB13000不同,不兼容GB13000,但是所包含文字上,算是和GB13000相同 | window現在的CP936 | 微軟 | | GB18030 | GBK自身并非國家標準,原始GB13000一直未被業界采用,2000年,國家出了標準GB18030-2000,簡稱GB18030,技術上兼容GBK而非GB13000,取代了GBK1.0,成了正式的國家標準。該標準收錄了27484個漢字+其他少數民族字符 | CP54936 | 中國大陸 | | **Unicode**· | 為了解決各國間編碼不統一的問題,國際標準化組織(ISO)和多語言軟件制造商這兩個組織合作搞出了 **unicode編碼**,它將所有語言統一到一套編碼,解決了各國間編碼格式不兼容的問題,運用在內存處理中。 unicode 編碼采用**兩個字節**來表示一個字符,這可以涵蓋世界上主流使用的字符;Unicode(學名:Universal Multiple-Octet Coded Character Set)就是世界各國合作開發的一種語言,簡稱為UCS; | --- | --- | | UTF-8 | utf-8 編碼是一種可變長編碼,是 Unicode 編碼根據一套規則轉換而來的,會將一個字符編碼為 1 到 4 個字節,utf-8 編碼一般可以減少字符編碼的長度(特別是英文字符較多的情況),運用在傳輸和存儲中;<br>如:在ASCII編碼中,`U`對應二進制序列是`01010101,`而在 Unicode中,`U`對應的二進制序列是`0000000001010101`,同樣表示一個英文字符,利用 Unicode 編碼較 ASCII編碼將多花費一倍的存儲空間。將Unicode編碼轉換為utf-8編碼**一般**(英文字符居多的情況)可以節省存儲空間 | | | | ISO? | 歐洲語系 | | | 舉一個例子:It's 知乎日報 unicode:每一個字符對應一個十六進制數字 ``` I 0049 t 0074 ' 0027 s 0073 0020 知 77e5 乎 4e4e 日 65e5 報 62a5 ``` 嚴格按照unicode的方式(UCS-2),應該這樣存儲: ``` I 00000000 01001001 t 00000000 01110100 ' 00000000 00100111 s 00000000 01110011 00000000 00100000 知 01110111 11100101 乎 01001110 01001110 日 01100101 11100101 報 01100010 10100101 ``` 英文前9位都是0浪費,我們換成utf-8 ``` I 01001001 t 01110100 ' 00100111 s 01110011 00100000 知 11100111 10011111 10100101 乎 11100100 10111001 10001110 日 11100110 10010111 10100101 報 11100110 10001010 10100101 ``` 詳細的轉換過程參看[https://www.zhihu.com/question/23374078](https://www.zhihu.com/question/23374078) utf-8 編碼一般可以減少字符編碼的長度(特別是英文字符較多的情況),因此它廣泛運用在存儲和傳輸的情形下。但是 utf-8 也不是沒有缺點,由于在 utf-8 編碼的規則下中英文的編碼長度不同,因此這使得我們在內存中操作它們時變得很復雜。所以我們在內存中操作的字符使用的一般是 Unicode 編碼,比如 Python 。下面一張圖將清楚的描述出 Unicode 和 utf-8 編碼的關系 ![](https://img.kancloud.cn/4e/8e/4e8eabf2de63ea3db230cc212cc6e8eb_1152x648.png) [**Code Page**](https://www.crifan.com/chinese_character_encoding_standard__unicode__code_page/) 什么是codepage?codepage就是各國的文字編碼和Unicode之間的映射表 而目前現存的有多個廠家,都為對應的不同的字符集,定義了對應的Code Page unicode包含gb13000 **圖表3DBCS字符集所對應的Code Page** | **代碼頁Code Page** | **對應的字符集Character Set** | | --- | --- | | 932 | Japanese | | 936 | GBK – Simplified Chinese | | 949 | Korean | | 950 | BIG5 – Traditional Chinese | **圖表4微軟的其他字符編碼的Code Page** | **代碼頁Code Page** | **對應的字符集Character Set** | | --- | --- | | 1200 | UTF-16LE Unicode little-endian | | 1201 | UTF-16BE Unicode big-endian | | 65000 | UTF-7 Unicode | | 65001 | UTF-8 Unicode | | 10000 | Macintosh Roman encoding (followed by several other Mac character sets) | | 10007 | Macintosh Cyrillic encoding | | 10029 | Macintosh Central European encoding | | 20127 | US-ASCII The classic US 7 bit character set with no char larger than 127 | | 28591 | ISO-8859-1 (followed by ISO-8859-2 to ISO-8859-15) | 微軟自己定義了一系列的Code Page,稱為ANSI Code Page。 起初,CP1252是基于ANSI的draft版本的,而ANSI后來演化為稱為ISO 8859-1,所以,算是CP1252是基于ISO 8859-1的,但是將ISO 8859-1中的C1 Control Code用作為擴展的可打印字符。 | **代碼頁Code Page** | **對應的字符集Character Set** | | --- | --- | | 1250 | Central and East European Latin | | 1251 | Cyrillic | | 1252 | West European Latin | | 1253 | Greek | | 1254 | Turkish | | 1255 | Hebrew | | 1256 | Arabic | | 1257 | Baltic | | 1258 | Vietnamese | | 874 | Thai | 上述Code Page中,我們比較常見一些的有: 簡體中文是CP936,繁體中文是CP950,UTF-8是65001等。 https://my.oschina.net/junn/blog/282160 ## **字符編碼轉換:** *iconv('GB2312', 'UTF-8//IGNORE', $str);? ? ? //將字符串的編碼從GB2312轉到UTF-8? ? ? ?c底層實現 轉碼速度快* // utf8轉gb2312 可能會被截斷而報錯;如utf8的中文字符”—”轉換gb2312。可以加//IGNORE或者//TRANSLIT解決 // //IGNORE 忽略不能轉換的字符 // //TRANSLIT如果在目標編碼中找不到與源編碼相匹配的字符,會選擇相似的字符進行轉換 *mb\_convert\_encoding(字符串,新編碼,原編碼,)? ?必須開啟擴展才行,轉碼速度也比較慢?在不能轉碼的字符時會強制轉換成\\0x00\\0x80,如從utf8轉換成gbk時* 一般情況下用 iconv,只有當遇到無法確定原編碼是何種編碼,或者iconv轉化后無法正常顯示時才用mb\_convert\_encoding 函數 [iconv支持的字符集](http://www.gnu.org/software/libiconv/) ~~~ mbstring該 PHP 擴展支持的字符編碼有以下幾種: (即帶有mb_xxx的函數) UCS-4* UCS-4BE UCS-4LE* UCS-2 UCS-2BE UCS-2LE UTF-32* UTF-32BE* UTF-32LE* UTF-16* UTF-16BE* UTF-16LE* UTF-7 UTF7-IMAP UTF-8* ASCII* EUC-JP* SJIS* eucJP-win* SJIS-win* ISO-2022-JP ISO-2022-JP-MS CP932 CP51932 SJIS-mac** (別名: MacJapanese) SJIS-Mobile#DOCOMO** (別名: SJIS-DOCOMO) SJIS-Mobile#KDDI** (別名: SJIS-KDDI) SJIS-Mobile#SOFTBANK** (別名: SJIS-SOFTBANK) UTF-8-Mobile#DOCOMO** (別名: UTF-8-DOCOMO) UTF-8-Mobile#KDDI-A** UTF-8-Mobile#KDDI-B** (別名: UTF-8-KDDI) UTF-8-Mobile#SOFTBANK** (別名: UTF-8-SOFTBANK) ISO-2022-JP-MOBILE#KDDI** (別名: ISO-2022-JP-KDDI) JIS JIS-ms CP50220 CP50220raw CP50221 CP50222 ISO-8859-1* ISO-8859-2* ISO-8859-3* ISO-8859-4* ISO-8859-5* ISO-8859-6* ISO-8859-7* ISO-8859-8* ISO-8859-9* ISO-8859-10* ISO-8859-13* ISO-8859-14* ISO-8859-15* ISO-8859-16* byte2be byte2le byte4be byte4le BASE64 HTML-ENTITIES 7bit 8bit EUC-CN* CP936 GB18030** HZ EUC-TW* CP950 BIG-5* EUC-KR* UHC (CP949) ISO-2022-KR Windows-1251 (CP1251) Windows-1252 (CP1252) CP866 (IBM866) KOI8-R* KOI8-U* ArmSCII-8 (ArmSCII8) * 表示該編碼也可以在正則表達式中使用。 ** 表示該編碼自 PHP 5.4.0 始可用。 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看