內(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編碼方式
大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

unicode code point table
大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

參考與擴(kuò)展
維基百科 UTF-8 https://en.wikipedia.org/w