UTF-8是一種變長字節的編碼方式,它以8位(1字節)爲單位對Unicode進行編碼。UTF-8理論上最多可以達到6字節長,但目前全世界的字符只需要4字節就可以表示完。
UTF-8規定,對於某一字符的UTF-8編碼,如果只有一個字節則其最高位爲0;如果是多字節,則其第一字節的開頭由N位連續的1加一位0組成,其他字節開頭以“10”開頭,剩餘字節將Unicode的二進制表示從左向右填充。首字節連續的1的個數表示字符編碼所需的字節數。如下所示,
Unicode | UTF-8 |
---|---|
00 00 ~ 00 7F | 0xxxxxxx |
00 80 ~ 07 FF | 110xxxxx 10xxxxxx |
08 00 ~ FF FF | 1110xxxx 10xxxxxx 10xxxxxx |
1 00 00 ~ 1F FF FF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
20 00 00 ~ 3 FF FF FF | 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
400 00 00 ~ 7F FF FF FF | 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
如上表所示,漢字“文”的Unicode編碼爲0x6587,在0800~FFFF之間,所以UTF-8需要用3字節(1110xxxx 10xxxxxx 10xxxxxx)來表示,x使用0x6587的二進制表示來填充。最終,"文"的UTF-8編碼爲111001101001011010000111。
UTF-8兼容ASCII。
UTF-8中英文通常佔3個字節。
P.S. PHP代碼示例