UTF-8(8-bit Unicode Transformation Format)是一種變長編碼方式,可以用來表示Unicode字符集中的所有字符。其編碼規則如下:
對于ASCII字符(U+0000至U+007F),UTF-8使用1個字節來編碼,高位bit為0,后面7位用來表示字符的Unicode碼。
對于非ASCII字符,UTF-8使用多個字節來編碼。具體規則如下:
如果字符的Unicode碼在U+0080至U+07FF之間,UTF-8使用2個字節來編碼。編碼方式為:110xxxxx 10yyyyyy,其中高5位為110,表示使用2個字節,后面的6位用來表示字符的高5位Unicode碼;第二個字節的高2位為10,后面的6位用來表示字符的低6位Unicode碼。
如果字符的Unicode碼在U+0800至U+FFFF之間,UTF-8使用3個字節來編碼。編碼方式為:1110xxxx 10yyyyyy 10zzzzzz,其中高4位為1110,表示使用3個字節,后面的4位用來表示字符的高4位Unicode碼;第二個字節的高2位為10,后面的6位用來表示字符的中間6位Unicode碼;第三個字節的高2位為10,后面的6位用來表示字符的低6位Unicode碼。
對于更大的Unicode碼,UTF-8使用更多字節來編碼,規則相似。
通過這種編碼方式,UTF-8可以表示Unicode字符集中的任意字符,并且對于ASCII字符,使用的字節數與ASCII編碼完全一致,這使得UTF-8兼容ASCII編碼。