Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как гарантированно перекодировать UTF-8 в Windows-1251?
 
 автор: ДацкыйКот   (02.03.2009 в 20:39)   письмо автору
 
 

При использовании 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 в 21:42)   письмо автору
 
   для: ДацкыйКот   (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

пуфф.. ну вобщем пока вроде заработало.. будут траблы, сообщу

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования