UTF-8
Добавлено: 02 ноя 2022, 15:33
Известно, что UTF-8 - это способ кодирования символов в представлении Unicode.
Что в старых языках создаёт много проблем для локализованных не ASCII строк...
Например, в C (стардарты POSIX.1-2001, POSIX.1-2008, C99) строки в UTF-8 (multibyte characters) обрабатываются группой функций mb*() (mblen() и др.). А Unicode символы представляются типом wchar_t, и обюрабатываются функциями (аналогами str*() в ANSI C) вида wc*() (wcslen() и др.) + множеством функций осуществляющих взаимодействие и преобразования wchar_t и multibyte characters (типа mbsrtowcs(), mbrtowc() и др.) см.: wchar.h - wide-character handling.
В Linux (GCC) Unicode символы, wchar_t вседа имеют размер 4 байта, представление UTF-32 ... независимо что они там чудят в Windows (и в cygwin), с их представлением Unicode как UTF-16, см.: wchar_t string on Linux, OS X and Windows.
Это всё достаточно общеизвестные вещи + очень важно для локализованных программ (русских, китайских, хинди ... и мн. мн. другие) + то что вам нигде особенно подробно не напишут в англоязычнх переводных книгах.
Я об этих вещах ... по крайней мере, относительно "классики" - C/C++ - написал, в своё время, 2 статьи: Локализация и регулярные выражения, C/C++
... которые, в конечном итоге, слились в один общий текст...
Что в старых языках создаёт много проблем для локализованных не ASCII строк...
Например, в C (стардарты POSIX.1-2001, POSIX.1-2008, C99) строки в UTF-8 (multibyte characters) обрабатываются группой функций mb*() (mblen() и др.). А Unicode символы представляются типом wchar_t, и обюрабатываются функциями (аналогами str*() в ANSI C) вида wc*() (wcslen() и др.) + множеством функций осуществляющих взаимодействие и преобразования wchar_t и multibyte characters (типа mbsrtowcs(), mbrtowc() и др.) см.: wchar.h - wide-character handling.
В Linux (GCC) Unicode символы, wchar_t вседа имеют размер 4 байта, представление UTF-32 ... независимо что они там чудят в Windows (и в cygwin), с их представлением Unicode как UTF-16, см.: wchar_t string on Linux, OS X and Windows.
Это всё достаточно общеизвестные вещи + очень важно для локализованных программ (русских, китайских, хинди ... и мн. мн. другие) + то что вам нигде особенно подробно не напишут в англоязычнх переводных книгах.
Я об этих вещах ... по крайней мере, относительно "классики" - C/C++ - написал, в своё время, 2 статьи: Локализация и регулярные выражения, C/C++
... которые, в конечном итоге, слились в один общий текст...