Кодировка - Unicode и т.д.





Проверьте и установите локальную кодировку

1️⃣ Проверьте локальную кодировку текущей системы.

Windows (cmd / PowerShell)

chcp

Текущая кодовая страница будет отображена:

Linux / macOS (Terminal)

locale

ПроверятьLANGилиLC_CTYPEзначение, например:

LANG=zh_TW.UTF-8
---

2️⃣ Проверьте текущую кодировку в программе на C++.

#include <clocale>
#include <iostream>

int main() {
    std::cout << "Current locale: " << std::setlocale(LC_ALL, nullptr) << std::endl;
}

В Windows обычно отображается что-то вродеCилиChinese (Traditional)_Taiwan.950

---

3️⃣ Установите локальную кодировку

Командная строка Windows (cmd)

chcp 65001

→ Переключите командную строку на UTF-8.

PowerShell

$OutputEncoding = [Console]::OutputEncoding = [Text.Encoding]::UTF8

Устанавливается в программе C++

#include <clocale>

интервал основной() {
    std::setlocale(LC_ALL, "zh_TW.UTF-8"); // Устанавливаем UTF-8
}

Или настройте Big5 в Windows

std::setlocale(LC_ALL, "Chinese_Taiwan.950");
---

4️⃣ Рекомендуемые настройки



Установить постоянный код

1️⃣ Предыстория проблемы

использоватьchcp 65001Вы можете только временно изменить кодировку символов текущей командной строки (cmd). Как только окно будет закрыто или перезапущено, значение по умолчанию будет восстановлено (например,950Большой5). Если вы хотите, чтобы вся система и все приложения использовали UTF-8, вам необходимо изменить «Региональные настройки» на уровне системы Windows.

---

2️⃣ Настройте всю Windows на использование UTF-8 навсегда.

Шаг 1. Откройте региональные настройки.

  1. включатьПанель управления
  2. выбиратьЧасы и регионы → регионы (Region)
  3. переключиться науправлять(Административное) Нумерация страниц
  4. НажмитеИзменить локаль системы...

Шаг 2. Включите UTF-8.

  1. Проверьте низ:
    ✅ Бета-версия: используйте Unicode UTF-8 для поддержки языков по всему миру (используйте Unicode UTF-8 для поддержки языков по всему миру)
  2. Нажмите ОК и перезагрузите систему.

После перезапуска локалью по умолчанию для консоли Windows, C++, .NET, Python и других программ будет UTF-8.

---

3️⃣ Проверьте, эффективно ли это

Проверьте в cmd

chcp

Если отображается:

Active code page: 65001

Это означает, что UTF-8 стал значением по умолчанию.

Проверить на C++

#include <clocale>
#include <iostream>

int main() {
    std::cout << "Current locale: " << std::setlocale(LC_ALL, nullptr) << std::endl;
}
---

4️⃣ Меры предосторожности

---

5️⃣ Альтернативы (без модификации системы)

Если вы не хотите, чтобы вся система была переведена в UTF-8, вы можете установить параметры запуска или внутрипрограммные настройки для определенных приложений:

cmd /K chcp 65001
Или позвоните внутри программы:
SetConsoleOutputCP(65001);
SetConsoleCP(65001);


Unicode escape sequences

Основные понятия

Escape-последовательность Юникода — это метод представления символов Юникода с использованием чистых символов ASCII. Обычно используется в исходном коде языка программирования, JSON, строковых константах и ​​межплатформенном обмене данными. Это обозначение используется, когда среда не может напрямую ввести или отобразить определенный символ.

\u формат

Наиболее распространенным форматом является\uXXXXXXXXпредставляет собой четырехзначное шестнадцатеричное число, Представляет кодовую точку Юникода.

\U формат

Поддерживается некоторыми языками (например, Python)\UXXXXXXXX, используя 8 шестнадцатеричных цифр, Все кодовые точки Unicode могут быть представлены напрямую.

представление пары агентов

В средах, поддерживающих только 16-битный Юникод (например, устаревшая спецификация JavaScript), превышатьU+FFFFПерсонажам требуется суррогатная пара.

Примеры общего языка

JavaScript


const s = "\u4E2D\u6587";

Python


s = "\u4E2D\u6587"
s2 = "\U0001F600"

JSON


{
  "text": "\u4E2D\u6587"
}

Когда использовать



URL Encoding

Основные понятия

Кодирование URL-адресов (также известное как процентное кодирование) — это способ преобразования символов в представление, безопасное для использования в URL-адресах. URL-адреса допускают только определенные символы ASCII, остальные необходимо преобразовать в проценты плюс шестнадцатеричные числа.

формат кодирования

Формат кодирования%HHHHШестнадцатеричное представление значения байта этого символа. Если символы занимают несколько байтов в UTF-8, они будут закодированы отдельно.

зарезервированные символы

Некоторые символы в 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

Когда использовать



Hexadecimal Escapes

Основные понятия

Шестнадцатеричные Escape-коды — это способ использования шестнадцатеричных чисел для представления символов. Часто используется в строковых константах в языках программирования для представления определенных байтов или символов ASCII.

\x формат

Наиболее распространенным форматом является\xHHHHпредставляет собой двузначное шестнадцатеричное число, Представляет байтовое значение, обычно соответствующее ASCII или однобайтовому символу.

Область применения

Шестнадцатеричные Escape-коды в основном работают только с однобайтовыми массивами. Если вы используете многобайтовые символы в кодировке UTF-8, вам необходимо разделить их на несколько\xHH

Поддержка общего языка

C / C++


char c = '\x41';

JavaScript


const s = "\x48\x65\x6C\x6C\x6F";

Python


s = "\x48\x65\x6C\x6C\x6F"

Отличия от экранирования Unicode

Когда использовать



Таблица кодировки ASCII

Таблица соответствия ASCII Hex
0x00x10x20x30x40x50x60x70x80x90xA0xB0xC0xD0xE0xF
0x00NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSI
0x10DLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS
0x20!"#$%&'()*+,-./
0x300123456789:;<=>?
0x40@ABCDEFGHIJKLMNO
0x50PQRSTUVWXYZ[\]^_
0x60`abcdefghijklmno
0x70pqrstuvwxyz{|}~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 Зона совместимости для совместимости со старыми системами набора символов, например с различными глифами для японских глифов.

Подвести итог

Перечисленный выше диапазон включает в себя большинство китайских иероглифов и распространяется во многих различных областях для удовлетворения различных потребностей, включая современные китайские иероглифы, древние иероглифы и совместимые иероглифы. Для дизайна китайских шрифтов или анализа символов эти диапазоны обеспечивают полную поддержку шрифтов.

Unicode Icons



  • Таблица символов UTF-8


    email: [email protected]
    
    T:0000
    資訊與搜尋 | 回dev首頁
    email: Yan Sa [email protected] Line: 阿央
    電話: 02-27566655 ,03-5924828