ToolAct工具行動

ASCII 碼表查詢

完整的 ASCII 字元編碼對照表,包含控制字元、可列印字元和擴充字元

共 256 個字元
十進位十六進位字元描述
00x00-空字元
10x01-標題開始
20x02-正文開始
30x03-正文結束
40x04-傳輸結束
50x05-請求
60x06-確認應答
70x07-響鈴
80x08-退格
90x09-水平定位符
100x0A-換行
110x0B-垂直定位符
120x0C-換頁
130x0D-歸位
140x0E-移出
150x0F-移入
160x10-資料鏈結轉義
170x11-裝置控制1
180x12-裝置控制2
190x13-裝置控制3
200x14-裝置控制4
210x15-否定應答
220x16-同步空閒
230x17-傳輸區塊結束
240x18-取消
250x19-媒介結束
260x1A-替換
270x1B-轉義
280x1C-檔案分隔符
290x1D-群組分隔符
300x1E-記錄分隔符
310x1F-單元分隔符
1270x7F-刪除
320x20空格
330x21!驚嘆號
340x22"雙引號
350x23#井號
360x24$美元符號
370x25%百分比符號
380x26&和號
390x27'單引號
400x28(左括號
410x29)右括號
420x2A*星號
430x2B+加號
440x2C,逗號
450x2D-連字號
460x2E.句號
470x2F/斜線
480x300數字 0
490x311數字 1
500x322數字 2
510x333數字 3
520x344數字 4
530x355數字 5
540x366數字 6
550x377數字 7
560x388數字 8
570x399數字 9
580x3A:冒號
590x3B;分號
600x3C<小於符號
610x3D=等號
620x3E>大於符號
630x3F?問號
640x40@小老鼠符號
650x41A大寫字母 A
660x42B大寫字母 B
670x43C大寫字母 C
680x44D大寫字母 D
690x45E大寫字母 E
700x46F大寫字母 F
710x47G大寫字母 G
720x48H大寫字母 H
730x49I大寫字母 I
740x4AJ大寫字母 J
750x4BK大寫字母 K
760x4CL大寫字母 L
770x4DM大寫字母 M
780x4EN大寫字母 N
790x4FO大寫字母 O
800x50P大寫字母 P
810x51Q大寫字母 Q
820x52R大寫字母 R
830x53S大寫字母 S
840x54T大寫字母 T
850x55U大寫字母 U
860x56V大寫字母 V
870x57W大寫字母 W
880x58X大寫字母 X
890x59Y大寫字母 Y
900x5AZ大寫字母 Z
910x5B[左方括號
920x5C\反斜線
930x5D]右方括號
940x5E^脫字符
950x5F_底線
960x60`反引號
970x61a小寫字母 a
980x62b小寫字母 b
990x63c小寫字母 c
1000x64d小寫字母 d
1010x65e小寫字母 e
1020x66f小寫字母 f
1030x67g小寫字母 g
1040x68h小寫字母 h
1050x69i小寫字母 i
1060x6Aj小寫字母 j
1070x6Bk小寫字母 k
1080x6Cl小寫字母 l
1090x6Dm小寫字母 m
1100x6En小寫字母 n
1110x6Fo小寫字母 o
1120x70p小寫字母 p
1130x71q小寫字母 q
1140x72r小寫字母 r
1150x73s小寫字母 s
1160x74t小寫字母 t
1170x75u小寫字母 u
1180x76v小寫字母 v
1190x77w小寫字母 w
1200x78x小寫字母 x
1210x79y小寫字母 y
1220x7Az小寫字母 z
1230x7B{左花括號
1240x7C|豎線
1250x7D}右花括號
1260x7E~波浪號
1280x80€
1290x81
1300x82‚
1310x83ƒ
1320x84„
1330x85…
1340x86†
1350x87‡
1360x88ˆ
1370x89‰
1380x8AŠ
1390x8B‹
1400x8CŒ
1410x8D
1420x8EŽ
1430x8F
1440x90
1450x91‘
1460x92’
1470x93“
1480x94”
1490x95•
1500x96–
1510x97—
1520x98˜
1530x99™
1540x9Aš
1550x9B›
1560x9Cœ
1570x9D
1580x9Ež
1590x9FŸ
1600xA0 
1610xA1¡
1620xA2¢
1630xA3£
1640xA4¤
1650xA5¥
1660xA6¦
1670xA7§
1680xA8¨
1690xA9©
1700xAAª
1710xAB«
1720xAC¬
1730xAD­
1740xAE®
1750xAF¯
1760xB0°
1770xB1±
1780xB2²
1790xB3³
1800xB4´
1810xB5µ
1820xB6
1830xB7·
1840xB8¸
1850xB9¹
1860xBAº
1870xBB»
1880xBC¼
1890xBD½
1900xBE¾
1910xBF¿
1920xC0À
1930xC1Á
1940xC2Â
1950xC3Ã
1960xC4Ä
1970xC5Å
1980xC6Æ
1990xC7Ç
2000xC8È
2010xC9É
2020xCAÊ
2030xCBË
2040xCCÌ
2050xCDÍ
2060xCEÎ
2070xCFÏ
2080xD0Ð
2090xD1Ñ
2100xD2Ò
2110xD3Ó
2120xD4Ô
2130xD5Õ
2140xD6Ö
2150xD7×
2160xD8Ø
2170xD9Ù
2180xDAÚ
2190xDBÛ
2200xDCÜ
2210xDDÝ
2220xDEÞ
2230xDFß
2240xE0à
2250xE1á
2260xE2â
2270xE3ã
2280xE4ä
2290xE5å
2300xE6æ
2310xE7ç
2320xE8è
2330xE9é
2340xEAê
2350xEBë
2360xECì
2370xEDí
2380xEEî
2390xEFï
2400xF0ð
2410xF1ñ
2420xF2ò
2430xF3ó
2440xF4ô
2450xF5õ
2460xF6ö
2470xF7÷
2480xF8ø
2490xF9ù
2500xFAú
2510xFBû
2520xFCü
2530xFDý
2540xFEþ
2550xFFÿ

什麼是 ASCII 碼?

ASCII(美國資訊交換標準代碼)是一種基於拉丁字母的字元編碼標準。它最初在20世紀60年代為電報通訊開發,後來成為電腦領域最基礎的字元編碼系統。標準 ASCII 碼包含 128 個字元(0-127),包括 33 個控制字元和 95 個可列印字元。擴充 ASCII(128-255)另外增加了 128 個字元用於符號和國際字元,但編碼方式因地區而異。

使用方法

基本操作

  1. 點選任意數值或字元即可複製
  2. 使用搜尋框快速尋找特定字元
  3. 點選分類按鈕依字元類型篩選
  4. 將滑鼠游標停留在字元上可查看詳細說明

編碼說明

  • ASCII 僅涵蓋 0 至 127 的字元範圍;帶有變音符號的字母、表情符號及大多數非英文文字皆需使用 UTF-8 等 Unicode 編碼。
  • 控制字元可能無法正常顯示,但仍會影響檔案、終端機、通訊協定及複製貼上的內容。

使用場景

查詢可見或不可見字元的確切編碼在除錯文字處理時,可透過字元、十進位值、十六進位值或描述搜尋,確認空格 32、LF 0x0A、CR 0x0D、ESC 0x1B 或大寫 A 65 等條目。本頁是純參考工具,搜尋不會將任何輸入送到外部,所有查詢都針對內嵌的 128 筆 ASCII 資料進行,因此內部碼點、日誌片段和通訊協定常數都能在不外傳的情況下查閱。
區分控制字元與可列印文字當日誌、序列訊息、CSV 檔案或終端輸出包含不會顯示在螢幕上但仍會改變解析行為的字元時,可使用控制、可列印和擴充篩選器。由於不會收集任何字元資料,這些篩選器同樣適合用於培訓新人、製作參考卡片或稽核解析器預期,而不會在後端留下記錄。
將參考值複製到程式碼或文件中撰寫解析器測試、通訊協定筆記、鍵盤參考、轉義序列說明或舊系統整合文件時,點選表格列的值即可複製。對於 128-255 的擴充值,仍需確認目標字碼頁——表格列出的是位置,但無法得知目標系統實際使用哪個字碼頁解碼。
不查手冊就能解讀轉義序列將 \x1B[31m、\r\n 或 \t 等序列貼入搜尋框,即可看到十進位、十六進位和二進位值以及可列印的呈現。當日誌行或終端輸出出現亂碼,需要確認原始位元組是控制字元還是字碼頁產物時非常實用。查詢僅針對頁內表格進行,因此來自正式環境的終端擷取不會離開瀏覽器。
為解析器建立可列印字元清單篩選至可列印字元,在定義嚴格解析器的允許清單前,先檢視 95 個 ASCII 範圍的內容。這有助於抓出對空白、標點和引號字元的假設——這些假設在不同程式語言、Shell、終端輸出和 CSV 變體之間往往不同。清單來自頁面自身的靜態資料集,引用它不依賴網路可用性或外部檔案。

技術原理

ASCII(美國資訊交換標準代碼,ANSI X3.4-1968,ISO/IEC 646:1991 IRV)是一種 7 位元字元編碼,將數值代碼 0-127 指派給 128 個字元。較低的 32 個代碼(0x00-0x1F)加上 0x7F 是從電傳打字機繼承的控制字元:NUL(0x00)、BEL(0x07,警示嗶聲)、LF(0x0A,換行)、CR(0x0D,歸位)、ESC(0x1B)、DEL(0x7F)等。代碼 0x20-0x7E 是可列印字元:空格、0x30-0x39 的數字 0-9、0x41-0x5A 的大寫字母 A-Z、0x61-0x7A 的小寫字母 a-z,以及介於其間的標點符號。 該編碼具有刻意設計的規則結構。數字是聚集的:'0' = 0x30、'1' = 0x31、...、'9' = 0x39。將數字字元轉換為其數值是 `code - 0x30`。字母也是聚集的:'A' = 0x41、'B' = 0x42、...、'Z' = 0x5A,以及 'a' = 0x61、...、'z' = 0x7A。同一字母的大寫和小寫之間的差值是 0x20(32),正好是第 5 位元被設為 1(1 << 5 = 32)。這使得大小寫轉換只需一次 XOR 或 OR/AND 與 0x20 的運算:`code ^ 0x20` 切換大小寫,`code | 0x20` 轉小寫,`code & 0x5F`(= `code & ~0x20`)轉大寫。這個位元技巧是最快速的大小寫轉換方式,出現在純 ASCII 字串的 strlen/strcmp 實作中。 ASCII 是為 7 位元電傳打字機及其前身的 5 層 Baudot 碼設計的,因此早於 8 位元位元組。8 位元「擴充 ASCII」範圍(0x80-0xFF)從未被標準化,這就是為什麼有這麼多字碼頁(ISO 8859-1 Latin-1、Windows-1252、MacRoman、KOI8-R、IBM437)爭奪高半部。ISO 8859-1(Latin-1)是最接近標準的,但即使是它也缺少歐元符號,直到 ISO 8859-15 才加入。C1 控制範圍(0x80-0x9F)本應保留(ISO 6429),但 Windows-1252 將其中一些重新用於可列印字元——這是一個長期存在的互通性痛點,最終由 UTF-8 解決。 UTF-8(RFC 3629,2003)由 Rob Pike 和 Ken Thompson 於 1992 年設計,是一個向後相容的超集:128 個 ASCII 代碼以單一位元組編碼為自身(0x00-0x7F),因此任何 ASCII 文字也是有效的 UTF-8 文字。0x7F 以上的代碼使用 2、3 或 4 位元組序列,具有特定位元模式(110xxxxx 10xxxxxx、1110xxxx 10xxxxxx 10xxxxxx、11110xxx 10xxxxxx 10xxxxxx 10xxxxxx),使解碼器在錯誤後可以逐位元組重新同步。相比之下,EBCDIC 是 IBM 的 8 位元大型主機編碼(8 位元 EBCDIC 是 8 位元的,不像 ASCII 是 7 位元),將字母指派到不連續的碼位('A' = 0xC1、'I' = 0xC9、'J' = 0xD1、...,帶有損害位元技巧和字串演算法的間隙)。 ISO 646 的國家變體用特定國家的字母替換了少量 ASCII 字元。例如,英國變體用英鎊符號 '£' 替換了 0x23(美國的 '#'),德國變體用母音字母替換了一些標點符號。這就是為什麼 C 語言的區域設定和 POSIX charmap 檔案在歷史上很重要——它們在 IRV(國際參考版本)和國家變體之間進行映射。逃脫這一混亂局面的方法是 Unicode / UTF-8,它使得整個 7 位元和 8 位元的爭論對任何新專案來說都過時了。

  • ASCII(ANSI X3.4-1968,ISO/IEC 646 IRV)每個字元使用 7 位元,共 128 個碼位:33 個控制字元(0x00-0x1F、0x7F)和 95 個可列印字元(0x20-0x7E)。
  • 控制字元(0x00-0x1F、0x7F)繼承自電傳打字機:NUL、BEL(0x07,警示嗶聲)、LF(0x0A)、CR(0x0D)、ESC(0x1B)、DEL(0x7F)。現代文字仍使用 LF 和 CR;其餘大多是歷史遺跡。
  • 可列印字元佈局:空格(0x20)、數字 '0'-'9'(0x30-0x39)、大寫 'A'-'Z'(0x41-0x5A)、小寫 'a'-'z'(0x61-0x7A)、介於其間的標點符號。將 '5' 轉換為 5 是 `code - 0x30`;大寫轉小寫是 `code | 0x20`。
  • 大小寫轉換只需一次位元運算:XOR 0x20 切換大小寫;OR 0x20 轉小寫;AND 0x5F(= `code & ~0x20`)轉大寫。這是任何語言中最快的大小寫轉換方式,也是 strlen/strcmp 在純 ASCII 緩衝區上的運作方式。
  • 8 位元擴充(0x80-0xFF)從未被標準化,因此 Windows-1252、ISO-8859-1、MacRoman、KOI8-R、IBM437 對高半部的定義各不相同。Windows-1252 在網路上勝出,是大多數舊版程式碼使用的事實上的「擴充 ASCII」。
  • UTF-8(RFC 3629,Pike & Thompson 1992)是 ASCII 的嚴格超集:128 個 ASCII 碼位以 1 位元組編碼為自身;U+007F 以上的碼位使用 2-4 位元組,帶有 110xxxxx 10xxxxxx 延續位元,使解碼器在錯誤後可以逐位元組重新同步。
  • EBCDIC(IBM,1960 年代大型主機)是 IBM z/OS 上使用的 8 位元替代方案。字母位置不連續('A'=0xC1、'I'=0xC9、'J'=0xD1),因此 ASCII 的大小寫轉換技巧不適用,tolower() 等位元移位演算法需要查表。
  • ISO 646 國家變體(英國、德國、瑞典等)用特定國家的字母替換了少量 ASCII 字元:英國變體將 '#' 替換為 '£'(0x23),德國變體將標點替換為母音字母。Unicode 之前的在地化就是這樣。

範例

字元快速查詢

字元:'A'
  十進位:  65
  十六進位:0x41
  二進位:  01000001
  八進位:  0101
  C 跳脫:  \x41  (在 C / C++ / Python / JavaScript 寫成 '\x41')

大小寫差異剛好為 0x20(十進位 32):
  'a' = 0x61 (97)    =  'A' (0x41) + 0x20
  'A' = 0x41 (65)    =  'a' (0x61) - 0x20
這就是為什麼切換第 5 位元(遮罩 0x20)可以翻轉字母大小寫。

  ch ^ 0x20   翻轉 A <-> a   (適用於 A-Z、a-z,其他字元不變)

排查換行符問題

LF  (0x0A,十進位 10)  - Unix、Linux、現代 macOS  '\n'
CR  (0x0D,十進位 13)  - 舊版 Mac OS(OS X 之前)、部分網路通訊協定  '\r'
CRLF (0x0D 0x0A,'13 10')  - Windows、HTTP、SMTP、FTP  '\r\n'

Windows 儲存的 'hi\r\n' 檔案 Hex dump:
  0000:  68 69 0d 0a         hi..

相同內容在 Linux 上儲存('hi\n')的 Hex dump:
  0000:  68 69 0a            hi.

對行數的影響:
  $ wc -l windows.txt unix.txt
       1 windows.txt    (1 個換行,0x0D 0x0A)
       1 unix.txt       (1 個換行,0x0A)
  位元組數不同(4 vs 3),dos2unix 等工具會掃描
  0x0D 0x0A 配對並去掉 0x0D 來偵測。

URL 編碼參考

RFC 3986 unreserved + reserved 字元集(其餘必須百分比編碼):
  unreserved  A-Z a-z 0-9 - _ . ~
  reserved    ! * ' ( ) ; : @ & = + $ , / ? # [ ]
  其他字元一律編碼為 %HH,HH 為兩位大寫十六進位

常見字元:
  space    0x20  ->  %20   (在 application/x-www-form-urlencoded 內也可用 '+')
  !        0x21  ->  %21
  "        0x22  ->  %22
  #        0x23  ->  %23
  $        0x24  ->  %24
  %        0x25  ->  %25
  &        0x26  ->  %26   (查詢字串的分隔符 - 出現在值內務必編碼)
  '        0x27  ->  %27
  (        0x28  ->  %28
  )        0x29  ->  %29
  +        0x2B  ->  %2B   (表單主體中編成 %20;'+' 在那裡代表空白)
  ,        0x2C  ->  %2C
  /        0x2F  ->  %2F   (路徑中為保留字元,查詢字串中通常安全)
  :        0x3A  ->  %3A
  ;        0x3B  ->  %3B
  =        0x3D  ->  %3D
  ?        0x3F  ->  %3F
  @        0x40  ->  %40

範例:    https://example.com/path with space and ampersand
編碼後:  https://example.com/path%20with%20space%20%26%20ampersand

控制字元跳脫與正規表示式中介字元

常見控制碼及其在 C / Python / JavaScript 字串中的跳脫形式:
  NUL  0x00  '\0'         (C 中的字串結尾符)
  BEL  0x07  '\a'         (終端機鈴聲)
  BS   0x08  '\b'         (倒退鍵)
  TAB  0x09  '\t'         (水平定位)
  LF   0x0A  '\n'         (換行)
  VT   0x0B  '\v'         (垂直定位)
  FF   0x0C  '\f'         (換頁)
  CR   0x0D  '\r'         (歸位)
  ESC  0x1B  '\x1b' / '\e' (POSIX)  (跳脫序列起始)
  DEL  0x7F  '\x7f'       (刪除)

必須以 \ 跳脫的正規表示式中介字元:
  ^ $ . | ? * + ( ) [ ] { } \

對應上表的 JavaScript 程式片段:
  const ctrl = { 0:'NUL', 9:'TAB', 10:'LF', 13:'CR', 27:'ESC', 32:'SP', 127:'DEL' };
  for (const [code, name] of Object.entries(ctrl)) {
    console.log(`${code.toString().padStart(3)}  0x${(+code).toString(16).padStart(2,'0')}  ${name}`);
  }
  // ->  ' 0x20 SP'   0a LF   0d CR   等等。

常見問題

ASCII 表有多大?

標準 ASCII 共有 128 個碼位(0–127):33 個控制字元(0–31 加上 127 DEL),以及 95 個可顯示字元(從空格到 ~)。「擴充 ASCII」泛指 Windows-1252、ISO-8859-1 等各種 256 碼位的單位元組編碼,嚴格來說已經不算 ASCII 了。

為什麼第 32 號列出來的是 Space 而不是看得到的字形?

碼位 32(0x20)就是空格字元本身,可顯示但不可見。本頁顯示「SP」或「Space」這個標籤方便你複製;點選整列仍會把真正的空格字元複製到剪貼簿。

前 32 個 ASCII 碼是做什麼的?

它們是電傳打字機時代留下的控制字元:TAB(9)、LF(10)、CR(13)、ESC(27)等。現代軟體仍會用到 TAB、LF、CR、NUL(0);其餘(BEL、ACK、ENQ 等)多半已成歷史,只會在序列通訊協定與二進位檔案標頭中出現。

ASCII 跟 UTF-8 是同一回事嗎?

ASCII 是針對英文設計的 7 位元編碼。UTF-8 則是變長編碼,前 128 個碼位與 ASCII 在位元組層級完全相容——所以任何純 ASCII 檔案也是合法的 UTF-8。UTF-8 再以 2 至 4 位元組序列擴充以涵蓋整個 Unicode。

怎麼把字元在十進位、十六進位、二進位之間轉換?

點選任何一列即可看到所有四種表示方式。例如 A 是十進位 65、十六進位 0x41、八進位 0101、二進位 01000001。Char 欄位顯示字元本身,Description 欄位則是該字元的官方 Unicode 名稱。

為什麼這份表沒有列出 é、ñ、中?

這些字元都不在 ASCII 範圍內。é 與 ñ 屬於 Latin-1(碼位 233 與 241);中 屬於 CJK 統一表意文字(U+4E2D)。請改用 Unicode 查詢工具——ASCII 只到 127。

如果我只知道字元的 ASCII 碼,要怎麼輸入?

在 Windows 上,按住 Alt 並在數字鍵盤輸入十進位碼即可(例如 Alt+65 輸出 A)。macOS 與 Linux 則直接從本表複製貼上,或使用輸入法的十六進位碼功能。在程式碼裡可以使用 \xNN(hex)、\NNN(octal)、Python 的 chr(N) 與 JavaScript 的 String.fromCharCode(N)。