內(nèi)容簡介
本文主要介紹了UTF8的一些基本概念,簡要介紹了mysql中 utf8 utf8mb3 utf8mb4 的區(qū)別;然后為介紹Java對Unicode編碼的支持,引入了一些編碼的基本概念,包括code point, code unit等,并介紹了Java提供的常用的支持Unicode編碼的方法;最后給出了過濾UTF8mb4的方案
UTF-8簡介
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,也是一種前綴碼。它可以用來表示Unicode標(biāo)準(zhǔn)中的任何字符,且其編碼中的第一個字節(jié)仍與ASCII兼容,這使得原來處理ASCII字符的軟件無須或只須做少部分修改,即可繼續(xù)使用。因此,它逐漸成為電子郵件、網(wǎng)頁及其他存儲或發(fā)送文字的應(yīng)用中,優(yōu)先采用的編碼。
UTF-8使用一至四個字節(jié)為每個字符編碼(2003年11月UTF-8被RFC 3629重新規(guī)范,只能使用原來Unicode定義的區(qū)域,U+0000到U+10FFFF,也就是說最多四個字節(jié)):
128個US-ASCII字符只需一個字節(jié)編碼(Unicode范圍由U+0000至U+007F)。
帶有附加符號的拉丁文、希臘文、西里爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文及它拿字母則需要兩個字節(jié)編碼(Unicode范圍由U+0080至U+07FF)。
其他基本多文種平面(BMP, Basic Multilingual Plane)中的字符(這包含了大部分常用字,例如CJVK常用字字符集 —— Chinese, Japanese, Vietnam, Korean)使用三個字節(jié)編碼(Unicode范圍由U+0800至U+FFFF)。
其他使用極少的Unicode 輔助平面(Supplementary Multilingual Plane)的字符使用四字節(jié)編碼(Unicode范圍由U+10000至U+10FFFF,主要包括不常用的CJK字符, 數(shù)學(xué)符號, emoji表情等)。
utf-8編碼方式
unicode code point table
參考與擴(kuò)展:
維基百科 UTF-8 https://en.wikipedia.org/w