C. Тема 1. Раздел 7
.pdfЧасть 3
Обычные кодировки ASCII (один байт на символ) позволяют представлять только 256 символов
Всё хорошо для английского языка
Для остальных языков приходится переделывать часть символов стандартной кодировки
Для расширенной многоязыковой поддержки требуется кодировка, позволяющая хранить символы всех языков
Решение – использовать для представления символов более одного байта
Это и есть Unicode
Существуют различные разновидности Unicode с различным количеством байтов на один символ
UTF8 – от 1 до 6 байт на символ
UTF16 – от 2 до 4 байт на символ
В Unicode есть специальные «модифицирующие символы», например, символ ударения, «крышка» от Й, точки от Ё
Обычный char не годится для представления одного символа
Многие стандартные функции работы со строками не могут работать со строками Unicode
Строки невозможно сравнивать
Длина строки определяется неверно
Использовать возможности стандартной библиотеки wchar, а также расширения стандартной библиотеки string
Использовать тип данных wchar_t (широкий символ)
В WinAPI wchar_t имеет размер 16 бит
В GNU/Linux wchar_t имеет размер 32 бита
Использовать адаптированные для Unicode варианты функций работы со строками
wcscmp – вариант strcmp для wchar_t
mbscmp – вариант strcmp для многобайтовых символов
Спасибо за внимание!