UTF-8是針對Unicode的一種可變長度字符編碼;它可以用來表示Unicode標準中的任何字符,而且其編碼中的第一個位元組仍與ASCII相容,使得原來處理ASCII字元的軟體無須或只進行少部修改後,便可繼續使用。
UTF-8(8位元,Universal Character Set/Unicode Transformation Format)是針對Unicode的一種可變長度字元編碼。它可以用來表示Unicode標準中的任何字符,而且其編碼中的第一個字節仍與ASCII相容,使得原來處理ASCII字符的軟體無須或只進行少部修改後,便可繼續使用。因此,它逐漸成為電子郵件、網頁及其他儲存或傳送文字的應用中,優先採用的編碼。
基本特徵
UCS字元U 0000到U 007F(ASCII)被編碼為位元組0×00到0x7F(ASCIⅡ相容)。這意味著只包含7位元ASCIl字元的檔案在ASCIⅡ和UTF-8兩種編碼方式下是一樣的。
所有大於0x007F的UCS字元被編碼為一個有多個位元組的字串,每個位元組都有標記位集。因此,ASCIl位元組(0x00-0x7F)不可能作為任何其他字元的一部分。表示非ASCIl字元的多位元組字串的第一個位元組總是在0xC0到0XFD的範圍裡,並指出這個字元包含多少個位元組。多位元組串的其餘位元組都在0x80到0xBF範圍。這使得重新同步非常容易,並使編碼無國界,且很少受遺失位元組的影響。
UTF-8編碼字元理論上可以最多到6個位元組長,然而16位元BMP字元最多只用到3位元組長,Bigendian UCS-4位元組字串的排列順序是預定的,位元組0xFE和OxFF在UTF-8編碼中從未用到。
編碼位元組數
UTF-8使用1~4位元組為每個字元編碼:
·一個US-ASCIl字元只需1位元組編碼(Unicode範圍由U 0000~U 007F)。
·帶有變音符號的拉丁文、希臘文、西里爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文等字母則需要2位元組編碼(Unicode範圍由U 0080 ~U 07FF)。
·其他語言的字元(包括中日韓文字、東南亞文字、中東文字等)包含了大部分常用字,使用3位元組編碼。
·其他極少使用的語言字元使用4位元組編碼。
UTF-8編碼規則:
如果只有一個位元組則其最高二進位位元為0;如果是多字節,其第一個位元組從最高位元開始,連續的二進位值為1的個數決定了其編碼的位元組數,其餘各位元組均以10開頭。
以上是utf-8是什麼編碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!