chcp
會顯示目前的「代碼頁 (Code Page)」:
locale
查看 LANG 或 LC_CTYPE 的值,例如:
LANG=zh_TW.UTF-8
---
#include <clocale>
#include <iostream>
int main() {
std::cout << "Current locale: " << std::setlocale(LC_ALL, nullptr) << std::endl;
}
在 Windows 通常會顯示像 C 或 Chinese (Traditional)_Taiwan.950。
chcp 65001
→ 將命令列切換為 UTF-8。
$OutputEncoding = [Console]::OutputEncoding = [Text.Encoding]::UTF8
#include <clocale>
int main() {
std::setlocale(LC_ALL, "zh_TW.UTF-8"); // 設為 UTF-8
}
std::setlocale(LC_ALL, "Chinese_Taiwan.950");
---
UTF-8。SetConsoleOutputCP(65001); // 設定輸出為 UTF-8
SetConsoleCP(65001); // 設定輸入為 UTF-8
使用 chcp 65001 只能暫時改變當前命令提示字元 (cmd) 的編碼,一旦關閉視窗或重新啟動,就會恢復預設值(例如 950 Big5)。若希望讓整個系統、所有應用程式都使用 UTF-8,需在 Windows 系統層級修改「地區設定」。
重開機後,Windows Console、C++、.NET、Python 等程式的預設 locale 都會是 UTF-8。
---chcp
若顯示:
Active code page: 65001
即表示 UTF-8 已成為預設。
#include <clocale>
#include <iostream>
int main() {
std::cout << "Current locale: " << std::setlocale(LC_ALL, nullptr) << std::endl;
}
---
如果不想全系統改成 UTF-8,可針對某些應用設定啟動參數或程式內設定:
cmd /K chcp 65001
或在程式內呼叫:
SetConsoleOutputCP(65001);
SetConsoleCP(65001);
Unicode escape sequence 是一種用純 ASCII 字元來表示 Unicode 字符的方法, 常見於程式語言原始碼、JSON、字串常值與跨平台資料交換。 當環境無法直接輸入或顯示特定字元時,會使用這種表示法。
最常見的格式是 \uXXXX,其中 XXXX 為 4 位十六進位數,
表示 Unicode 碼位。
\u0041 → A\u00E9 → é\u4E2D → 中
部分語言(如 Python)支援 \UXXXXXXXX,使用 8 位十六進位數,
可直接表示所有 Unicode 碼位。
\U0001F600 → 😀
在僅支援 16 位元 Unicode 的環境(如 JavaScript 舊規格)中,
超過 U+FFFF 的字元需使用代理對(surrogate pair)。
\uD83D\uDE00 → 😀JavaScript
const s = "\u4E2D\u6587";
Python
s = "\u4E2D\u6587"
s2 = "\U0001F600"
JSON
{
"text": "\u4E2D\u6587"
}
URL Encoding(又稱 Percent-Encoding)是一種將字元轉換為可安全用於 URL 的表示方式。 URL 僅允許特定的 ASCII 字元,其餘字元必須轉換成百分比加十六進位數的形式。
編碼格式為 %HH,其中 HH 是該字元位元組值的十六進位表示。
若字元在 UTF-8 下佔多個位元組,會分別編碼。
%20%21%E4%B8%ADURL 中有部分字元具有特殊語意,稱為保留字元。 是否需要編碼取決於使用位置。
:/?&=#以下字元在 URL 中可直接使用,不需編碼。
- _ . ~JavaScript
encodeURIComponent("中文 test")
decodeURIComponent("%E4%B8%AD%E6%96%87%20test")
Python
from urllib.parse import quote, unquote
quote("中文 test")
unquote("%E4%B8%AD%E6%96%87%20test")
在 application/x-www-form-urlencoded 格式中,
空白字元會被編碼成 +,而非 %20。
一般 URL 路徑中仍使用 %20。
Hexadecimal Escapes 是一種使用十六進位數來表示字元的跳脫寫法, 常用於程式語言的字串常值中,用來表示特定位元組或 ASCII 字元。
最常見的格式是 \xHH,其中 HH 為 2 位十六進位數,
代表一個位元組的值,通常對應 ASCII 或單一位元組字元。
\x41 → A\x61 → a\x0A → 換行
Hexadecimal Escapes 多半僅適用於單一位元組,
若使用 UTF-8 編碼的多位元組字元,需拆成多個 \xHH。
\xE4\xB8\xADC / C++
char c = '\x41';
JavaScript
const s = "\x48\x65\x6C\x6C\x6F";
Python
s = "\x48\x65\x6C\x6C\x6F"
| 0x0 | 0x1 | 0x2 | 0x3 | 0x4 | 0x5 | 0x6 | 0x7 | 0x8 | 0x9 | 0xA | 0xB | 0xC | 0xD | 0xE | 0xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x00 | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
| 0x10 | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
| 0x20 | ␣ | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
| 0x30 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
| 0x40 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| 0x50 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
| 0x60 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
| 0x70 | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL |
| 0x80 | Ç | ü | é | â | ä | à | å | ç | ê | ë | è | ï | î | ì | Ä | Å |
| 0x90 | É | æ | Æ | ô | ö | ò | û | ù | ÿ | Ö | Ü | ¢ | £ | ¥ | ₧ | ƒ |
| 0xA0 | á | í | ó | ú | ñ | Ñ | ª | º | ¿ | ⌐ | ¬ | ½ | ¼ | ¡ | « | » |
| 0xB0 | ░ | ▒ | ▓ | │ | ┤ | ╡ | ╢ | ╖ | ╕ | ╣ | ║ | ╗ | ╝ | ╜ | ╛ | ┐ |
| 0xC0 | └ | ┴ | ┬ | ├ | ─ | ┼ | ╞ | ╟ | ╚ | ╔ | ╩ | ╦ | ╠ | ═ | ╬ | ╧ |
| 0xD0 | ╨ | ╤ | ╥ | ╙ | ╘ | ╒ | ╓ | ╫ | ╪ | ┘ | ┌ | █ | ▄ | ▌ | ▐ | ▀ |
| 0xE0 | α | ß | Γ | π | Σ | σ | µ | τ | Φ | Θ | Ω | δ | ∞ | φ | ε | ∩ |
| 0xF0 | ≡ | ± | ≥ | ≤ | ⌠ | ⌡ | ÷ | ≈ | ° | ∙ | · | √ | ⁿ | ² | ■ |
Unicode 中的中文字符主要分佈在以下幾個區段。以下列出常見的中文字符(漢字)在 Unicode 表中的各範圍,以及每個範圍的詳細說明。
| 範圍名稱 | Unicode 範圍 | 說明 |
|---|---|---|
| CJK Unified Ideographs | 4E00–9FFF | 收錄基本的中文、日文和韓文字符,是最常見的中文字範圍。 |
| CJK Unified Ideographs Extension A | 3400–4DBF | 擴展A區,包含較少使用的中文字符。 |
| CJK Unified Ideographs Extension B | 20000–2A6DF | 擴展B區,主要涵蓋古文字符和一些罕見漢字。 |
| CJK Unified Ideographs Extension C | 2A700–2B73F | 擴展C區,進一步擴充了古文字及罕見字。 |
| CJK Unified Ideographs Extension D | 2B740–2B81F | 擴展D區,包含極少使用的漢字。 |
| CJK Unified Ideographs Extension E | 2B820–2CEAF | 擴展E區,主要補充更多罕見的中文字符。 |
| CJK Unified Ideographs Extension F | 2CEB0–2EBEF | 擴展F區,包含更罕見的古文字和漢字。 |
| CJK Unified Ideographs Extension G | 30000–3134F | 擴展G區,是最新補充的中文字符區域。 |
| CJK Compatibility Ideographs | F900–FAFF | 相容區,用於與舊字符集系統的相容性,例如日文字形的不同字形。 |
以上列出的範圍包含大部分的漢字字符,並分佈在多個不同的區域以滿足不同需求,包括現代漢字、古文字及相容字符等。對於中文字體設計或字符分析來說,這些範圍提供了完整的字體支援。
email: [email protected]