Последняя активность
Определение кодировки строки средствами PHP | AkeLLa [Off] [#] (30.03.2008 / 17:16)
|
Кто что знает по этой теме? mb_detect_encoding все говорит utf-8, даже если сложеный для ее список windows-1251, windows-1252, utf-8.. Строка хоть в чем, а говорит UTF-8. Какой есть другой способ?
| AkeLLa [Off] [#] (30.03.2008 / 22:18)
|
не, это не пойдет (( мне нужно кодировку русских ID3 тегов из файла и перекодировать в UTF-8
| KaPaHDaLLIuK [Off] [#] (05.05.2008 / 21:01)
|
Так на ш2м можно перекодировать... или ты че хочешь?
Я тоже столкнулся с этой проблемой, что не всегда корректно определяет.
Для тэгов не пробовал, но для импортируемых текстов расскажу:
Имеет значение порядок того, как ты определяешь кодировку.
Делай типа того: Если 1251, если нет, то может KOI, если нет, то UTF.
Подбери рабочую последовательность кодировок, в каком порядке ты их будешь проверять условием.
Что интересно, по логике вроде похуй, в какой последовательности проверяешь...
Но на практике, есть ложные срабатывания.
З.Ы.
И конечно не забывай про mb_internal_encoding()
Если неправильно задана, то использование mb_string дает непредсказуемые результаты.
| AkeLLa [Off] [#] (05.05.2008 / 21:28)
|
Олег, так mb_string_encoding() 1251 не поддерживает.. Или ее нужно как-нибудь подругому писать в порядок?
Ты ковырни библиотеку нашего двигак, там со строки 1075 как раз и применяется функция mb_check_encoding.
Щас опишу подробнее что желательно сделать...
Так, как внутренняя кодировка PHP не UTF-8, мы ОБЯЗАТЕЛЬНО, перед вызовом любой функции mb_string должны задать кодировку:
mb_internal_encoding('UTF-8');
А затем уже можем работать. Вот пример из нашей библиотеки:
if (mb_check_encoding($txt, 'UTF-8'))
{
} elseif (mb_check_encoding($txt, 'windows-1251'))
{
$txt = iconv("windows-1251", "UTF-8", $txt);
} elseif (mb_check_encoding($txt, 'KOI8-R'))
{
$txt = iconv("KOI8-R", "UTF-8", $txt);
} else
{
echo "Файл в неизвестной кодировке!<br /><a href='index.php?act=load&id=" . $id . "'>Повторить</a><br/>";
require_once ('../incfiles/end.php');
exit;
}
| AkeLLa [Off] [#] (05.05.2008 / 21:52)
|
и это работает?
AkeLLa(05.05.2008/16:52):" и это работает? "Да, реально работает, потому и ставил.
| AkeLLa [Off] [#] (05.05.2008 / 22:09)
|
чето я сомневаюсь.. на php.su читал что mb_* кодировки windows-1251, windows-1252 не поддерживает вообще.. тексты с 1251 в utf-8 перекодирует успешно? у меня например в списке были windows-1251 и utf-8, так функция всегда возвращала вторую, в какой кодировке не был текст ((
Дык проверь сам на двиге
.gif)
Попробуй импортировать 2 файла. Один набери Русскими буквами в Виндовсовском блокноте (1251), а второй возьми какой-нить UTF-8.
| AkeLLa [Off] [#] (05.05.2008 / 22:33)
|
спасибо, попробую как-то на днях.. может сегодня))
| AkeLLa [Off] [#] (05.05.2008 / 22:37)
|
AlkatraZ(05.05.2008/16:36):" Так, как внутренняя кодировка PHP не UTF-8 "Ы? Как это не UTF-8? Если PHP стоит на *NIX машине, то стандартная кодировка будет UTF-8, если на windows,то WINDOWS-1251..
Нет!
Кодировка функций PHP задается не системой, где стоит сам Пых, а в файле php.ini
По умолчанию там стоит Латинская кодировка и редко кто ее меняет.
Изм. AlkatraZ (05.05.2008 / 22:57) [1]Лучше, для надежности всегда вначале задавай:
mb_internal_encoding('UTF-8');
а уж потом применяй функцию гг.
# AlkatraZ (05.05.2008 / 21:12)
Я тоже столкнулся с этой проблемой, что не всегда корректно определяет.
Для тэгов не пробовал, но для импортируемых текстов расскажу:
Имеет значение порядок того, как ты определяешь кодировку.
ДелаСпасибо, очень не помогло, потому что я не пробовал даже


Всего: 18
Скачать темуФорум
Новые вверху