ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
12 июля
401450 Топик полностью
fk0, легенда (11.04.2013 14:46, просмотров: 45) ответил =AlexD= на Ты принципиально используешь utf8 ? Интересно, для этого есть причины, или просто понты?
А что следовало бы использовать? UTF8 в отличии от L"текст" не требует поддежки от компилятора (и работает, стало быть, с контроллерами проф. уровня). И также прозрачно со всем остальным софтом используемым в разработке. В качестве промежуточного представления UTF8 дико неудобен (из-за переменной длины символа), удобен только для констант, для переменных разумней таки wchar_t (хотя бы в виде жалкой эмуляции из ISO-8859-5 на уровне typedef char wchar_t, что опять же не требует ни компилятора, ни библиотек, только мелочи некоторые). CP1251 в качестве промежуточного уровня требует таблиц перекодировки и ничем кроме религиозных причин не оправдан (почему тогда не CP866? я ещё помню что такое INT21! Да и в гипер-терминале кажись CP866 тоже), поддержки компилятора тоже нет (сортировка, функции вроде isalpha). В качестве исходника и констант CP1251 тоже неудобен, т.к. вызывает неудобства с софтом используемым в разработке -- все должны уметь cp1251 и опять же перекодировку в коде на вводе-выводе, где окажется UCS2. ISO-8859-5 таблиц не требует и легко переводится в UCS2 и/или UTF8, но тоже трудности с поддержкой кодировки в разработке ещё круче чем с CP1251, уж проще из/в UTF8 перекодировать когда нужно, зато вообще не надо ломать голову над кодировками, UTF8 он и в африке UTF8, а перекодировать из/в UTF8 совсем не сложно. Единственная серьёзная проблема с UTF8 начинается при засовывании его в printf'ы со сложными форматами (%10s) т.п. где нужно считать символы, а не байты, при применении strlen и т.п. Но там нужно использовать wchar_t вообще-то по уму, тогда проблем не будет.
[ZX]