UTF8和unicode的轉換@新精讚

文章推薦指數: 80 %
投票人數:10人

常聽到的unicode, utf8, ascii 又是什麼?utf8和unicode之間的關係及如何轉換? 現在日期2022/10/12星期三 Togglenavigation 現在日期2022/10/12星期三 最新文章[札記]2022.10~12月札記 最新消息開始發表有用的蚊蟑和黴體 數位休閒動漫影音遊戲愉樂網路和服務APACHEMYSQL/Mariadb電腦網路資訊網路協定/設定作業系統WindowsCentosLINUXFreebsdMACIOSunix-like應用其他OS前端程設HTML/CSSJquery/JSFlash/繪圖後端程設PHPopenCV+PythonJAVAPERLC#作者廢言作者碎碎念作者吱吱叫作者喃喃語維修記錄經濟學視野 主題 標準 時間線 更多發現 [無邊框] 精讚新精讚首頁 網路和服務電腦網路資訊 UTF8和unicode的轉換 377 UTF8和unicode的轉換 “常聽到的unicode,utf8,ascii又是什麼?utf8和unicode之間的關係及如何轉換?„ 分享此文連結//n.sfs.tw/15670 分享連結UTF8和unicode的轉換@新精讚 (文章歡迎轉載,務必尊重版權註明連結來源) 2022-03-1117:43:21最後編修 2022-03-1109:54:21By張○○   自動目錄 Unicodeunicode簡介unicode的分組unicode表示方法網頁上的表示方法PHP上顯示unicode[4]查詢unicodeUTF8UTF8的編碼方式各字節組擁有的字數UTF8和unicode之間的轉換unicode轉成UTF8UTF8轉成unicode參考資料 常常看到有些文字會用0x12AB或是0x0123AB、U+4AE0、Ӓ這種形式表示,這種寫法到底是什麼意思?和我們常用的文字之間有什麼關係? 常聽到的unicode,utf8,ascii又是什麼?utf8和unicode之間的關係及如何轉換?藉由此文整理並徹底了解。

Unicode unicode簡介 計算機起源於美國,上個世紀,他們制定了一套字符編碼規則,稱爲ASCII編碼。

ASCII編碼一共定義了128個字符,裡面有英文大小寫數字、標點符號及一些控制用符號,這些字符組成的集合就叫做ASCII字符集。

隨着計算機的普及,在不同的地區和國家又出現了很多字符編碼,比如:大陸的GB2312、港臺的BIG5,日本的ShiftJIS等等。

[1] 但是由於字符編碼不同,文字在不同國家之間經常需要轉換,否則會出現亂碼,網際網路的出現這種情況越來越嚴重需要解決。

於是1990開始就有許多機構致力於統一不同的文字編碼,於是Unicode就出現了,歷經幾十年的發展,成為現在看到的版本。

簡單來說,unicode就是把現有的文字符號等加以編碼收集起來,有點類似一本超大字典,所以unicode也可稱為通用字元集ucs(英語:UniversalCharacterSet,UCS)[3]。

  unicode的分組 目前的unicode字符分成17組,從U+0000至U+10FFFF,每組稱為編碼平面(CodePlane),每平面擁有65536個編碼點。

其中U+0000~U+FFFF稱為基本多語言平面(BasicMultilingualPlane,簡記為BMP),也叫做平面0。

平面0包含了世界上多種文字。

其餘劃入16個輔助平面(SupplementaryPlane),編碼點範圍U+10000~U+10FFFF。

其中平面0的中文字群範圍: 4E00-9FBF:CJK統一表意符號(CJKUnifiedIdeographs)包含漢字 總共有40895-19968=20927個漢字 其餘分群請看[6]   目前的Unicode字符分為17組編排,U+0000至U+10FFFF,每組稱為代碼平面(CodePlane),每平面擁有65536(2的16次方)個代碼點。

U+0000~U+FFFF劃入基本多語言平面(BasicMultilingualPlane,簡記為BMP),也叫做平面0。

平面0包含了世界上多種文字。

其餘劃入16個輔助平面(SupplementaryPlane),代碼點範圍U+10000~U+10FFFF。

輔助平面中的文字通常使用不上。

原文網址:https://kknews.cc/code/o5jgy8q.html 目前的Unicode字符分為17組編排,U+0000至U+10FFFF,每組稱為代碼平面(CodePlane),每平面擁有65536(2的16次方)個代碼點。

U+0000~U+FFFF劃入基本多語言平面(BasicMultilingualPlane,簡記為BMP),也叫做平面0。

平面0包含了世界上多種文字。

其餘劃入16個輔助平面(SupplementaryPlane),代碼點範圍U+10000~U+10FFFF。

輔助平面中的文字通常使用不上。

原文網址:https://kknews.cc/code/o5jgy8q.html 目前的Unicode字符分為17組編排,U+0000至U+10FFFF,每組稱為代碼平面(CodePlane),每平面擁有65536(2的16次方)個代碼點。

U+0000~U+FFFF劃入基本多語言平面(BasicMultilingualPlane,簡記為BMP),也叫做平面0。

平面0包含了世界上多種文字。

其餘劃入16個輔助平面(SupplementaryPlane),代碼點範圍U+10000~U+10FFFF。

輔助平面中的文字通常使用不上。

原文網址:https://kknews.cc/code/o5jgy8q.html unicode表示方法 在表示一個Unicode的字元時,通常會用「U+」或小寫的「u+」然後緊接著多組十六進位的數字來表示這一個字元。

例如 U+50 U+3105 u+0123AB 程式語言有時會用0x代替U+,例如 0x3105   網頁上的表示方法 如果想在網頁上呈現unicode,把'U+'替換成'',把十六進位的編碼換成十進位,最後在字元的結束加上分號即可,例如顯示注音符號的ㄅ,查碼發現編碼是u+3105, 要把3105換成10進位,即12549,那在網頁上打上 ㄅ 就會出來注音符號的ㄅ。

  PHP上顯示unicode[4] print0x3105; //12549 json_decode('"\u3105"'); //ㄅ   查詢unicode 那要怎麼知道文字的unicode編碼?當然如果可以直接打出來的字不必理會他的編碼,但有些字是以現有的輸入法打不出來的,這時就可以使用查表的方法 可以參考以下網站(2022.3): unicode有分類清單https://jicheng.tw/hanzi/unicode?s=9F9C&e=9F9C&font= ;;(推薦[6]) 全字庫https://www.cns11643.gov.tw/searchQ.jsp?ID=0 unicode清單有轉10進位https://www.ifreesite.com/unicode/character.htm   UTF8 unicode是字元集,要實現的話還是得靠編碼系統,其中有名的有utf8,utf16,ucs2,ucs4等等。

根據w3tech[5]的研究,到了2022.3,utf8已占了網頁中全部編碼系統的98%。

其餘編碼雖然仍存在諸多系統中,但使用數量已漸漸示微。

  UTF8的編碼方式 UTF-8是一種非固定長度字節編碼方式。

最長可達6個bytes(以下稱為字節)組成一個字,最短只需1個byte。

這樣的好處是他相容於ascII的編碼方式。

以下是UTF-8的編碼原則(2進位)。

1字節0xxxxxxx 2字節110xxxxx10xxxxxx 3字節1110xxxx10xxxxxx10xxxxxx 4字節11110xxx10xxxxxx10xxxxxx10xxxxxx 5字節111110xx10xxxxxx10xxxxxx10xxxxxx10xxxxxx 6字節1111110x10xxxxxx10xxxxxx10xxxxxx10xxxxxx10xxxxxx 舉例如下,粉底代表定義的指定位元: A=>65=>01000001 <==等同於ASCII и=>208184=> 1101000010111000 錢=>233140162=>111010011000110010100011 ね=>227129173 =>111000111000000110101101 一隻豬(請看下圖)=>240,147,131,159 =>11110000100100111000001110011111 四個字節的字有些電腦無法正確顯示,請參考上圖。

簡單的判斷方法,第一個字節2進位有幾個1開頭就是幾個字節的UTF8字。

  各字節組擁有的字數 1字節0xxxxxxx=>2^7=128個 2字節110xxxxx10xxxxxx=>2^(5+6)=2048 3字節1110xxxx10xxxxxx10xxxxxx=>2^(4+6+6)=65536 4字節11110xxx10xxxxxx10xxxxxx10xxxxxx=>2^(3+6+6+6)=2097152 5字節111110xx10xxxxxx10xxxxxx10xxxxxx10xxxxxx=>67108864 6字節1111110x10xxxxxx10xxxxxx10xxxxxx10xxxxxx10xxxxxx=>2147483648 基本上用3個字節就足以涵蓋67000個字、4個字節就足以涵蓋215萬個字,五個字節以上的字目前沒有。

  UTF8和unicode之間的轉換 UTF8是變動字節長,而unicode是固定字節,這兩者之間如何轉換?   unicode轉成UTF8 Unicode的字節編碼對照UTF8的編碼方式 直接用範例作說明,例如中文字的「錢」unicode是U+9322 1.因為是9322,屬於平面0000800~00FFFF這個範圍,也就是三字碼UTF8 2.9322=>9322(16進位)=>1001001100100010(2進位)=>16個位元拆成4,6,6分組  =>1001001100100010 3.將分成的3組代換掉UTF8的xxxx..  111010011000110010100010 =>233 140162 (10進位) 利用PHP來驗證 printchr(233).chr(140).chr(162); 結果 錢   UTF8轉成unicode 由UTF8轉成unicode只要倒過來運算即可。

以剛才的錢字為例: 1.取得UTF8編碼233140162 2.轉成二進位111010011000110010100010  3.把顏色的部分組合=>1001001100100010 4.8個位元一組轉成16進位=>9322 5.U+9322完成   參考資料 [1]https://www.readfog.com/a/1638084002220969984 [2]https://zh.wikipedia.org/wiki/Unicode [3]https://zh.wikipedia.org/wiki/%E9%80%9A%E7%94%A8%E5%AD%97%E7%AC%A6%E9%9B%86 [4]https://stackoverflow.com/questions/17539412/print-unicode-characters-php [5]https://w3techs.com/technologies/cross/character_encoding/ranking [6]https://jicheng.tw/hanzi/unicode?s=9F9C&e=9F9C&font=   END 你可能感興趣的文章 [CentOS8]GCP政府憑證申請及掛載資安的關係開始要求各網站導入ssl,那就申請政府憑證吧 銅網路線路UTP測試名詞解釋一條銅網路線的品質好不好得經過測試,測試也是有學問的 HPSAS硬碟leds燈號說明HPSAS硬碟leds燈號(hpg7/g6系統適用)說明 YAHOO拒絕我的mail:spamhaus'slist有人反應yahoo收不到信,因為該ip被列入spamhaus'slist 台灣2022(民國111年)節慶國定假日ics下載找不到2022年的假日ics檔?沒關係,我自己做一個 [Gigapixels]世界最大的單張倫敦照片-3200億畫素世界最大的單張倫敦照片-3200億畫素,從BT塔上拍攝。

我有話要說 >> 姓名* EMAIL* 留言內容* 我是人類* 限制:留言最高字數1000字。

限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言 [無留言] 隨機好文 使用Google尋找你的手機這近發現google竟然可以用來找android的手機,而且不需要經過什麼設定或安裝軟體。

談借錢人借錢時手心向上頭向下,人還錢時手心向下頭向上 Linuxshell的date表示法linux下SHELL中的date表示法 詭異的創業思維創業的思維中,有多少銀彈,有多少技術,有多少人脈,有多少時間等等,每個都要考慮進去,以熱忱建立的關係脆弱的像蘇打餅乾一樣.. 網頁的標頭(head)搜尋引擎和FB最佳化網頁的標頭(head)搜尋引擎和facebook最佳化 Unicodeunicode簡介unicode的分組unicode表示方法網頁上的表示方法PHP上顯示unicode[4]查詢unicodeUTF8UTF8的編碼方式各字節組擁有的字數UTF8和unicode之間的轉換unicode轉成UTF8UTF8轉成unicode參考資料 到最頂端 到中間 到最底端



請為這篇文章評分?