Unicode/字元編碼對照表

輸入一個字元,即可對照檢視其Unicode碼點、UTF-8位元組序列,以及JavaScript/HTML/URL/CSS轉義表示形式的免費工具。全部在瀏覽器內完成。

常見字元編碼對照表

字元 碼點 UTF-8 備註
A U+0041 41 大寫字母(ASCII,1位元組)
0 U+0030 30 數字(ASCII,1位元組)
U+0020 20 半形空格(ASCII,1位元組)
! U+0021 21 感嘆號(ASCII符號,1位元組)
@ U+0040 40 “at”符號(ASCII符號,1位元組)
© U+00A9 C2 A9 版權符號(Latin-1補充區,2位元組)
U+20AC E2 82 AC 歐元符號(3位元組)
U+2192 E2 86 92 向右箭頭(箭頭區塊,3位元組)
U+3042 E3 81 82 日語平假名(3位元組)
U+6F22 E6 BC A2 CJK統一表意文字(3位元組)
U+D55C ED 95 9C 韓文諺文音節(3位元組)
😀 U+1F600 F0 9F 98 80 表情符號(超出基本多文種平面,4位元組,在JS中以代理對錶示)

使用提示

  • 輸入框可以輸入多個字元,此時會在輸入框下方分別顯示每個字元對應的結果區塊。
  • 像😀這樣的表情符號超出了Unicode的基本多文種平面(BMP,U+0000至U+FFFF),因此JavaScript字串內部會用兩個程式碼單元(代理對)來表示它,這就是“JavaScript轉義”一行會顯示兩個`\uXXXX`的原因。
  • CSS轉義(如`\41`)直接書寫碼點的十六進位制數字且不加字首,如果緊隨其後的字元可能被誤讀為十六進位制數字的一部分,建議在末尾加一個空格。
  • 瀏覽器會將十進位制(A)和十六進位制(A)的HTML實體視為相同結果,可根據標記習慣任選其一。
  • 每一行都有複製按鈕,可直接將該值複製到剪貼簿,方便貼上到程式碼或CSS中使用。

常見問題

JavaScript字串在內部採用UTF-16編碼,一個程式碼單元只能表示16位(0至65535)範圍內的值。Unicode中存在大量超出該範圍的碼點(U+10000及以上,絕大多數表情符號都在此範圍),因此需要用兩個特殊的程式碼單元——“高代理”和“低代理”——組合成一個代理對來表示。如果逐個使用`charCodeAt`讀取字串,會分別得到這兩個半值,因此必須使用`codePointAt`才能得到正確、完整的碼點。

Unicode碼點(例如U+3042)只是用來標識某個字元的編號本身。而UTF-8是將該碼點在計算機中儲存或傳輸為位元組序列的一種具體編碼方案。同一個碼點在不同編碼方式下表示的位元組序列並不相同——UTF-8使用1到4個可變長度的位元組,而UTF-16或UTF-32則會產生不同的位元組序列。

UTF-8可以用單個位元組表示純ASCII字元(英文字母、數字、基本標點),因此與早期以英語為中心的系統高度相容,同時又能表示Unicode中的所有字元。截至2026年,網路上絕大多數文本都採用UTF-8編碼,它也是HTML文件推薦使用的預設字元編碼。

不一樣,兩者語法不同。HTML實體的寫法是A(十進位制)或A(十六進位制,帶`x`字首),且只能在HTML標記中使用。CSS轉義的寫法是`\41`——只寫十六進位制數字,不加`U+`或`x`字首——用於CSS選擇器或屬性值中。需要根據使用場景選擇正確的格式。
ツールくん

閒話 ― Unicode如何統一了四分五裂的字元編碼世界

在Unicode出現之前,不同國家甚至不同語言的計算機字元編碼方式千差萬別。僅日文文本就存在Shift_JIS、EUC-JP、JIS編碼等多種並存的方案,在使用不同編碼的系統之間交換文本時經常出現亂碼。1991年釋出的Unicode 1.0,正是為了解決這一混亂局面,為世界上每一種語言使用的每一個字元分配唯一的編號(碼點)。

Unicode與ISO/IEC 10646這一國際標準最初是各自獨立制定的,但後來兩者協調一致,共享相同的字元集合與碼點分配。如今Unicode已收錄超過15萬個字元(包括表情符號),並且每年都會發布新版本繼續新增新字元。

UTF-8由Ken Thompson和Rob Pike於1992年設計,其突破性在於既能與純ASCII文本完全向後相容,又能表示Unicode中的所有字元——這一設計恰好契合了網際網路的需求,此後UTF-8已成為網際網路文件事實上的標準編碼。