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

Форум PHP

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

 

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

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

тема: MBSTRING в PHP5, автоматические не определяет исходную кодировку
 
 автор: alexxspb   (17.08.2009 в 16:03)   письмо автору
 
 

Возникла необходимость перекодировки текста в UTF-8 из различных, заранее не известных кодировок (сузим область до кириллицы - windows-1251, koi8-r).

Настроил на Денвере 3 mbstring, написал тестовый скрипт, и тесты показали, что mbstring не может определить автоматически кодировку исходного текста (mb_convert_encoding($value, 'UTF-8', "CP1251, KOI8-R");), но нормально работает, если указать одну верную кодировку (mb_convert_encoding($value, 'UTF-8', "CP1251"); )

Если кто-нибудь сталкивался с такой проблемой, прошу откликнутся! Всем спасибо за внимание.

  Ответить  
 
 автор: Снова_забыл_пароль   (17.08.2009 в 16:34)
 
   для: alexxspb   (17.08.2009 в 16:03)
 

Есть такие варианты: указать вторым аргументом массив кодировок; вместо CP1251 вписать WINDOWS-1251 (обычно так пишу, пока проблем не было).
Кстати, у этой функции вроде есть ошибки в определении UTF-8 и WINDOWS-1251. Не всё правильно различает

  Ответить  
 
 автор: alexxspb   (17.08.2009 в 16:40)   письмо автору
 
   для: Снова_забыл_пароль   (17.08.2009 в 16:34)
 

Спасибо за советы, но, к сожалению, ничего из этого не помогло.. Попробую потестировать iconv (никогда с ней не работал) и отпишусь о результатах. Если у кого есть еще варианты решения моей задачи, буду рад услышать)

  Ответить  
 
 автор: Trianon   (17.08.2009 в 16:44)   письмо автору
 
   для: alexxspb   (17.08.2009 в 16:40)
 

Ваша задача точного решения не имеет.

  Ответить  
 
 автор: alexxspb   (17.08.2009 в 16:45)   письмо автору
 
   для: Trianon   (17.08.2009 в 16:44)
 

Обнадеживает.. Но выхода другого нет, решить ее как-то надо.
Расстраивает не то, что точного решения нет, а то, что необходимые инструменты не дают нужного результата.

  Ответить  
 
 автор: alexxspb   (17.08.2009 в 17:42)   письмо автору
 
   для: alexxspb   (17.08.2009 в 16:45)
 

Решение найдено и протестировано.

На одном из форумов Денвера обсуждали эту проблему, и я нашел две ссылки:
http://mrgall.com/blog/2008/02/13/autoencode/
http://popoff.donetsk.ua/text/work/libs/a/charset/

Теперь использую первую библиотеку у себя в проекте.
Единственное НО: если строка уже в UTF-8, библиотека выдает что-то невнятное, поэтому лучше сразу заменить код:
 if ($this->is_utf8($string))
            $detect='utf-8';

из функции autoencode() на:
if (TRUE === mb_check_encoding($string, 'utf-8'))
        {
            $detect = 'utf-8';
        }

Тогда проблем с этим не будет.
Вторую библиотеку тестировать не стал, так как она гораздо большего объема, и первая больше устраивает.

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

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