|
|
|
| При использовании iconv() периодически выпадают ошибки:
Notice: iconv() [function.iconv]: Detected an illegal character in input string in aaa.php on line 69
|
Насколько я понимаю, это связано с тем, что для ряда символов UTF-8 нет соответствия в Windows-1251.
Вот думаю, как бы их вычислить эти символы, вырезать из исходного текста и потом прогнать функцию iconv()?
Или проблема в другом?
Переводить весь сайт на UTF-8 - слишком глобальное решение.. Не знаю, пока наверно не готов к нему )) Так что придется помучиться с CP-1251.
Но если у вас есть хорошие аргументы в пользу UTF-8 или полезные ссылки, обязательно ознакомлюсь.. | |
|
|
|
|
|
|
|
для: ДацкыйКот
(02.03.2009 в 20:39)
| | Нашел вроде решение проблемы..
У iconv() похоже есть ряд интересных параметров и нюансов.
1) Если добавить //TRANSLIT к параметру out_charset будет включена транслитеризация. Это означает, что вслучае, когда символа нет в конечной кодировке, он заменяется одним или несколькими аналогами. Если добавить //IGNORE, то символы, которых нет в конечной кодировке, будут опущены. Иначе, будет возвращена строка str , обрезанная до первого недопустимого символа.
http://www.php.net/manual/ru/function.iconv.php
Мой случай - //IGNORE
2) Похоже, иногда возникают проблемы, если записывать CP1251 вместо windows-1251, в частности с буквой 'ш'
3) Говорят, что букву ё нужно предварительно вырезать.
http://www.php.net/manual/ru/function.iconv.php#82821
Еще ругаются на 0x96 "long dash"
http://www.php.net/manual/ru/function.iconv.php#59717
4) А кто-то предлагает вообще из-за нестабильной работы iconv() использовать преобразования htmlentities()
http://www.php.net/manual/ru/function.iconv.php#81494
пуфф.. ну вобщем пока вроде заработало.. будут траблы, сообщу | |
|
|
|