首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言 ASCII 碼表完整解析:控制字元、可列印字元、擴展 ASCII 與編碼陷阱

     編輯:C 語言問答

標準 ASCII (7-bit, 0-127)

範圍類別含義常見字元
0-31, 127控制字元 (非列印)裝置控制、通訊協議、格式控制NUL(0), SOH(1), STX(2), ETX(3), EOT(4), ENQ(5), ACK(6), BEL(7/\a), BS(8/\b), HT(9/\t), LF(10/\n), VT(11/\v), FF(12/\f), CR(13/\r), SO(14), SI(15), DLE(16), DC1-4(17-20), NAK(21), SYN(22), ETB(23), CAN(24), EM(25), SUB(26), ESC(27), FS(28), GS(29), RS(30), US(31), DEL(127)
32空白Space' '
33-47標點/運算符! " # $ % & ' ( ) * + , - . /
48-57數字0-90 1 2 3 4 5 6 7 8 9
58-64標點/運算符: ; < = > ? @
65-90大寫字母A-ZA B C ... Z
91-96標點[ \ ] ^ _ `
97-122小寫字母a-za b c ... z
123-126標點{ | } ~

擴展 ASCII (8-bit, 128-255) —— 非標準、編碼頁相關

第 8 位 (bit 7) 用於擴展字符集,不同編碼頁 (Code Page) 定義不同:
→ CP437 (IBM PC 原生):繪圖字符、希臘字母、數學符號。
→ CP936 (GBK/GB2312 兼容):中文漢字雙位元組編碼 (高位≥128)。
→ CP1252 (Windows ANSI 西歐語):常見西歐語言字符 (€、™、智慧引號等)。
→ ISO-8859-1 (Latin-1):西歐語言子集,128-159 為控制字元保留。

C語言中的字元類型與編碼陷阱

  • char 有號性實現定義:`-128~127` 或 `0~255`。處理原始位元組請用 unsigned char 或 uint8_t。
  • 字串字面值 `"abc"` 編碼取決於原始碼檔案編碼與編譯器選項 (GCC `-fexec-charset`,MSVC `/execution-charset`)。
  • 標準庫字元分類函式 (`isalpha`, `isdigit`, `islower` 等) 行為依賴當前 `` `setlocale(LC_CTYPE, ...)`,預設 "C" locale 僅識別 ASCII。
  • Unicode 處理請用 UTF-8 (配合 `char*`/`uint8_t*` + ICU) 或 UTF-16/32 (`wchar_t`/`char16_t`/`char32_t` + ``)。

快速查表宏

#define IS_CTRL(c)   ((c) < 32 || (c) == 127)
#define IS_PRINT(c)  ((c) >= 32 && (c) <= 126)
#define IS_DIGIT(c)  ((c) >= '0' && (c) <= '9')
#define IS_UPPER(c)  ((c) >= 'A' && (c) <= 'Z')
#define IS_LOWER(c)  ((c) >= 'a' && (c) <= 'z')
#define IS_HEX(c)    (IS_DIGIT(c) || ((c) >= 'A' && (c) <= 'F') || ((c) >= 'a' && (c) <= 'f'))
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved