|
|
|
| Возникла необходимость перекодировки текста в 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. Не всё правильно различает | |
|
|
|
|
|
|
|
для: Снова_забыл_пароль
(17.08.2009 в 16:34)
| | Спасибо за советы, но, к сожалению, ничего из этого не помогло.. Попробую потестировать iconv (никогда с ней не работал) и отпишусь о результатах. Если у кого есть еще варианты решения моей задачи, буду рад услышать) | |
|
|
|
|
|
|
|
для: alexxspb
(17.08.2009 в 16:40)
| | Ваша задача точного решения не имеет. | |
|
|
|
|
|
|
|
для: Trianon
(17.08.2009 в 16:44)
| | Обнадеживает.. Но выхода другого нет, решить ее как-то надо.
Расстраивает не то, что точного решения нет, а то, что необходимые инструменты не дают нужного результата. | |
|
|
|
|
|
|
|
для: 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';
}
|
Тогда проблем с этим не будет.
Вторую библиотеку тестировать не стал, так как она гораздо большего объема, и первая больше устраивает. | |
|
|
|