Текст "Локализация в коде C/C++" сильно дополнен (и архив примеров ещё более).Olej писал(а): А дальнейшее развитие текста см. здесь: локализация строк в C-коде.
Спасибо этой теме обсужденияРедакция 09, от 01.09.2016
Страниц 22
Текст "Локализация в коде C/C++" сильно дополнен (и архив примеров ещё более).Olej писал(а): А дальнейшее развитие текста см. здесь: локализация строк в C-коде.
Спасибо этой теме обсужденияРедакция 09, от 01.09.2016
Страниц 22
C#, Суррогатные пары Unicode в VisualStudioЕщё несколько лет назад считалось, что все символы «влезут» в диапазон между 0 и 216-1, а это значило, что любой символ можно представить при помощи двух байтов. К сожалению, со временем потребовалось больше символов, что привело к появлению т.н. «суррогатных пар» (surrogate pair). С ними всё стало значительно сложнее
Сурогатные пары - это проблемы выньдаунов, и оставим их решать выньдаунам (пока, временно, или насовсем)Также везде пишут, что суррогатные пары Unicode не поддерживаются только в Windows 95 и 98, а в Windows 2000, XP, Vista, 7, 8
все должно быть в порядке. Однако не работает.
P.S. Уточним здесь только, что 4 байта - это код Unicode, UTF-32, или wchar_t (POSIX). А символ в UTF-8 (мультибайтном) может представляться от 1 до 6 байт.В UTF-8 не используются суррогатные пары, 4 байтов достаточно для записи любого символа юникода.
Следите здесь: локализация в коде C/C++, как писать...Olej писал(а):Тут выяснилась одна интереснейщая подробность...
Кодировка UTF-8, применяющаяся сейчас в Linux повсеместно, предусматривает кодирование любых символов, в самом общем случае (английских, русских, китайских, арабских ... племени бхуту ...) от 1 до 6 байт на символ.nezabudka писал(а):Библитеки wchar и wctype любезно предоставили мне функции
по работе со знаками размером в 4 байта и соответствующие к ним типы переменных wchar_t и wint_t.
Префикс 'w' подразумевает слово 'wide' - расширеный. Кирилица состоит из двух байтовых символов.
Но я не стала ограничивать размер вводимых знаков 2 байтами и выбрала буфер ввода размером
в 4 байта
Как обещал - так и сделалOlej писал(а):Но это настолько обширная + интересная тема, что она заслуживает отдельного рассмотрения, в отдельной теме.
Olej писал(а): Как обещал - так и сделал.
Код: Выделить всё
[olej@dell Соль]$ export LANG=ko_KR.utf8mb4
[olej@dell Соль]$ locale | head -n2
LANG=ko_KR.utf8mb4
LC_CTYPE="ko_KR.utf8mb4"
Код: Выделить всё
[olej@dell regex]$ echo "русский текст на корейский манер"
русский текст на корейский манер
[olej@dell regex]$ echo вашшче | egrep "ш{2,}"
вашшче
Код: Выделить всё
[olej@dell regex]$ ./regex2 арт
аппарат апартамент аплодисмент
'аппарат апартамент аплодисмент' ->
19/25 : арт
^C
[olej@dell regex]$ ./regex3 "(аш)+"
шабаш
'шабаш' ->
6/10 : аш
6/10 : аш
^C