Лучший ответ
-
2 0
vacca (56) 6 (7624)2419 14 лет
Смысла проверять валидность однобайтной кодировки немного, потому что
мы не сможем различить кодировки, у которых совпадают множества
определения.
Если очень хочется, можно или
1) проверить, нет ли в строке одного из
0x81 #
0x83 #
0x88 #
0x8A #
0x8C #
0x90 #
0x98 #
0x9A #
0x9C #
0x9F #
0xA1 #
0xA5 #
Если есть, то символ не определён в cp-1257, и следовательно, false.
2) Подобрать кодировку с похожей областью определения, вроде cp-1254,
и использовать её (если она определена в этом чудном языке, конечно),
и надеясь, что пользователь избежал турецких букв.
3) Использовать iso-8859-4, которая совпадает в алфавитной части с
cp-1257 уповая на то, что в строке не встретятся неаскишные
спецсимволы, типа «», которых нет в ISO-шных кодировках.
Ответы
-
1 0
wad (56) 7 (37507)3823 14 лет
изучить сорцы php, написать свой фильтр mbstring для cp1257, предложить патч php developing community.
в следующем релизе кодировка станет "supported", и все скажут тебе огромное спасибо.
ну или просто написать альтернативу проверки кодировки на самом php. -
1 0
Laptop (41) 6 (16930)249 14 лет
А в чём смысл? Какова задача вообще?
Просто mb_check_encoding не определяет кодировку, а проверяет подходят ли входные данные к заданной вами кодировке. Но как сказали уже, в однобайтовых кодировках совпадают наборы символов. Т.е. в принципе текст, набранный латинскими буквами, без специфичных акцентов, умбляуд и прочих особенностей, вполне пройдёт проверку через mb_check_encoding как в CP-12050, так и в CP-1257.
Что касается альтернатив, то вы сначала задачу поставьте, причём глобально. Для чего вы хотите определить кодировку, при каких условиях, и т.д.? Тогда будет видно. -
0 0
new_vit (54) 6 (12210)32665 14 лет
Спросил у знакомых гуру:
Похоже, одна строка с alias-ом должна помочь:
https://svn.roundcube.net/trunk/roundcubemail/program/include/main.inc
ну и вообще,
http://www.google.com/#hl=en&q=mb_check_encoding+1257&aq=f&aqi=&oq=&fp=8ec9ea851cee2c5b