LINUX.ORG.RU

php определение кодировки


0

1

Определяю кодировку (из тегов песен) с помощью charset_x_win(). Правильный текст возвращает в кодировке cp1251, хотя мне нужно UTF-8. Делаю iconv, и всё отлично... если бы не французский, немецкий, польский... и т.п. языки. Дело в том, что cp1251 не поддерживает символы этих языков, и перегоняя в utf-8 уже появляются неправильные символы.

Вопрос: как определить кодировку сразу в UTF-8?

★★

Я бы сделал такой велосипед: в функции function charset_x_win($s)

case 'utf':
return _charset_utf8_win($s);

заменил бы на return $s, а в предыдущих строках:

case 'alt':
return _charset_alt_win($s);
case 'koi-8r':
return _charset_koi_win($s);

добавил бы iconv в utf8. И получилась бы функция charset_x_utf8

amomymous ★★★
()

В общем — никак, кодировку текста можно лишь с некоторой вероятностью определить.
Если у тебя в тегах может быть только 2 кодировки: cp1251 и iso-8859, можно попробовать сначала сделать utf8_decode, если не получится - iconv.
Как-то так.

OramahMaalhur
()

подряд берем все пары язык->язык, в результирующем тесте ищем слова из словаря. В качестве решения выбираем тот вариант, где словарных слов больше.

stevejobs ★★★★☆
()
Ответ на: комментарий от artradixcom

Кажется я чего-то не понимаю. При чем тут .htaccess??

Tanger ★★★★★
()
Ответ на: комментарий от artradixcom

А как насчет пойти найух с тупыми советами?

boombick ★★★★★
()

>Вопрос: как определить кодировку сразу в UTF-8?

Если нет под рукой готовых библиотек, то оценить долю символов в младшей и старшей половинах кодовой таблицы (<128 и >=128). Если больше символов в младшей — это латиница с умляутами. Если больше в старшей — русский. Исключения маловероятны. Хотя с порогом срабатывания можно будет поиграть.

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.