LINUX.ORG.RU

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

Исправление 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
}

И ещё три подобных вызова. На этом всё :)