История изменений
Исправление
kirk_johnson,
(текущая версия)
:
Так библиотека ICU использует wchar_t и wchar.h
Ты видел, как они используют wchar?
U_CAPI int32_t U_EXPORT2
u_strlen(const UChar *s)
{
#if U_SIZEOF_WCHAR_T == U_SIZEOF_UCHAR
return (int32_t)uprv_wcslen((const wchar_t *)s);
#else
const UChar *t = s;
while(*t != 0) {
++t;
}
return t - s;
#endif
}
И ещё три подобных вызова. На этом всё :)
А, повторяю, речь о том, что разработчики предпочитают избегать мультибайтных функций и ICU, и вместо этого парсят UTF-8 однобайтными функциями без ICU. Просто потому, что это экономит память. Иначе софт жрал бы гораздо больше оперативки.
Нет, просто потому, что авторы программ на C частенько из США или Канады, где остальные кодировки просто никому не уперлись. А во всех остальных языках (ну кроме плюсов), юникод не требует какой-то особой обработки и вполне доступен из коробки.
Исходная версия
kirk_johnson,
:
Так библиотека ICU использует wchar_t и wchar.h
Ты видел, как они используют wchar?
U_CAPI int32_t U_EXPORT2
u_strlen(const UChar *s)
{
#if U_SIZEOF_WCHAR_T == U_SIZEOF_UCHAR
return (int32_t)uprv_wcslen((const wchar_t *)s);
#else
const UChar *t = s;
while(*t != 0) {
++t;
}
return t - s;
#endif
}
И ещё три подобных вызова. На этом всё :)