LINUX.ORG.RU

История изменений

Исправление PPP328, (текущая версия) :

поэтому нет проблем с обработкой строк вида «Фирма Argus», где намешаны англ. с рус..

Их и на UTF-8 нет, не знаю, кто вам сказал обратно.

А «длина строки» (а не количество codepoints!) в utf-8 получается через strlen. wcslen вам возвращает codepoints для сконвертированного wchar.

Я вас, наверное, удивлю, но wchar вам не гарантирует, что один wchar - одно знакоместо. Он гарантирует, что у вас один символ из Unicode таблицы может поместиться в один wchar. А (внезапно!) в unicode часть символов - это модификаторы символа, так что zalgo-text - это не один символ wchar, а такое же количество codepoints, что и в utf-8.

Более того, все эти извращения с wchar - костыль:

The width of wchar_t is compiler-specific and can be as small as 8 bits. Consequently, programs that need to be portable across any C or C++ compiler should not use wchar_t for storing Unicode text.

Исправление PPP328, :

поэтому нет проблем с обработкой строк вида «Фирма Argus», где намешаны англ. с рус..

Их и на UTF-8 нет, не знаю, кто вам сказал обратно.

А «длина строки» (а не количество codepoints!) в utf-8 получается через strlen. wcslen вам возвращает codepoints для сконвертированного wchar.

Я вас, наверное, удивлю, но wchar вам не гарантирует, что один wchar - одно знакоместо. Он гарантирует, что у вас один символ из Unicode таблицы может поместиться в один wchar. А (внезапно!) в unicode часть символов - это модификаторы символа, так что zalgo-text - это не один символ wchar, а такое же количество codepoints, что и в utf-8.

Исправление PPP328, :

поэтому нет проблем с обработкой строк вида «Фирма Argus», где намешаны англ. с рус..

Их и на UTF-8 нет, не знаю, кто вам сказал обратно.

А «длина строки» (а не количество codepoints!) в utf-8 получается через strlen. То же самое вам возвращает wcslen для сконвертированного wchar.

Я вас, наверное, удивлю, но wchar вам не гарантирует, что один wchar - одно знакоместо. Он гарантирует, что у вас один символ из Unicode таблицы может поместиться в один wchar. А (внезапно!) в unicode часть символов - это модификаторы символа, так что zalgo-text - это не один символ wchar, а такое же количество codepoints, что и в utf-8.

Исходная версия PPP328, :

поэтому нет проблем с обработкой строк вида «Фирма Argus», где намешаны англ. с рус..

Их и на UTF-8 нет, не знаю, кто вам сказал обратно.

А «длина строки» в utf-8 получается через strlen. То же самое вам возвращает wcslen для сконвертированного wchar.

Я вас, наверное, удивлю, но wchar вам не гарантирует, что один wchar - одно знакоместо. Он гарантирует, что у вас один символ из Unicode таблицы может поместиться в один wchar. А (внезапно!) в unicode часть символов - это модификаторы символа, так что zalgo-text - это не один символ wchar, а такое же количество codepoints, что и в utf-8.