chcp
Текущая кодовая страница будет отображена:
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>
интервал основной() {
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Большой5). Если вы хотите, чтобы вся система и все приложения использовали UTF-8, вам необходимо изменить «Региональные настройки» на уровне системы Windows.
После перезапуска локалью по умолчанию для консоли Windows, C++, .NET, Python и других программ будет 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);
Escape-последовательность Юникода — это метод представления символов Юникода с использованием чистых символов ASCII. Обычно используется в исходном коде языка программирования, JSON, строковых константах и межплатформенном обмене данными. Это обозначение используется, когда среда не может напрямую ввести или отобразить определенный символ.
Наиболее распространенным форматом является\uXXXX,вXXXXпредставляет собой четырехзначное шестнадцатеричное число,
Представляет кодовую точку Юникода.
\u0041 → A\u00E9 → é\u4E2D→ среднийПоддерживается некоторыми языками (например, Python)\UXXXXXXXX, используя 8 шестнадцатеричных цифр,
Все кодовые точки Unicode могут быть представлены напрямую.
\U0001F600 → 😀В средах, поддерживающих только 16-битный Юникод (например, устаревшая спецификация JavaScript),
превышатьU+FFFFПерсонажам требуется суррогатная пара.
\uD83D\uDE00 → 😀JavaScript
const s = "\u4E2D\u6587";
Python
s = "\u4E2D\u6587"
s2 = "\U0001F600"
JSON
{
"text": "\u4E2D\u6587"
}
Кодирование URL-адресов (также известное как процентное кодирование) — это способ преобразования символов в представление, безопасное для использования в URL-адресах. URL-адреса допускают только определенные символы ASCII, остальные необходимо преобразовать в проценты плюс шестнадцатеричные числа.
Формат кодирования%HH,вHHШестнадцатеричное представление значения байта этого символа.
Если символы занимают несколько байтов в UTF-8, они будут закодированы отдельно.
%20%21%E4%B8%ADНекоторые символы в URL-адресах имеют особую семантику и называются зарезервированными символами. Требуется ли кодирование, зависит от того, где оно используется.
:/?&=#Следующие символы можно использовать непосредственно в URL-адресах без кодирования.
- _ . ~JavaScript
encodeURIComponent("Китайский тест")
decodeURIComponent("%E4%B8%AD%E6%96%87%20test")
Python
из цитаты импорта urllib.parse, снять кавычки
quote("Китайский тест")
снять кавычки("%E4%B8%AD%E6%96%87%20test")
существоватьapplication/x-www-form-urlencodedВ формате,
Символы пробелов будут закодированы как+, скорее, чем%20.
Все еще используется в общих URL-путях.%20。
Шестнадцатеричные Escape-коды — это способ использования шестнадцатеричных чисел для представления символов. Часто используется в строковых константах в языках программирования для представления определенных байтов или символов ASCII.
Наиболее распространенным форматом является\xHH,вHHпредставляет собой двузначное шестнадцатеричное число,
Представляет байтовое значение, обычно соответствующее ASCII или однобайтовому символу.
\x41 → A\x61 → a\x0A→ перевод строкиШестнадцатеричные Escape-коды в основном работают только с однобайтовыми массивами.
Если вы используете многобайтовые символы в кодировке 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 | ≡ | ± | ≥ | ≤ | ⌠ | ⌡ | ÷ | ≈ | ° | ∙ | · | √ | ⁿ | ² | ■ |
Китайские иероглифы в Юникоде в основном распространены в следующих разделах. Ниже перечислены диапазоны распространенных китайских иероглифов (Ханьцзы) в таблице Юникода, а также подробное описание каждого диапазона.
| имя области | Диапазон Юникода | иллюстрировать |
|---|---|---|
| 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]