Может ли php конвертировать строки со всеми кодировками charset в utf8 - PullRequest
0 голосов
/ 29 июля 2010

Может ли php преобразовать строки со всеми кодировками кодировки в utf8?

Решения, которые не работают:

  1. utf8_encode($string) - но только его кодируетстрока ISO-8859-1 в UTF-8?
  2. iconv($incharset, $outcharset,$text) - но как найти текущее кодирование строки?(может быть только если строковая часть документа html dom, а не просто строковая)

спасибо

Ответы [ 2 ]

5 голосов
/ 29 июля 2010

Можно преобразовать строку из любой кодировки, поддерживаемой iconv(), в UTF-8 в PHP.

но как найти текущую кодировку строки?

Вам никогда не нужно «находить» текущую кодировку: Ваш скрипт всегда должен знать, что это такое . Любой ресурс, который вы запрашиваете, если он правильно закодирован, даст вам кодировку в заголовке content-type или другими способами.

Как говорит Артефакто, существует возможность использования mb_detect_encoding(), но это не надежный метод. В потоке данных программы всегда должно быть определено, в какой кодировке находится строка (и желательно работать с UTF-8 внутри) - это путь.

1 голос
/ 29 июля 2010

Как правило, вы не можете знать кодировку заданной строки с помощью.

Все, что вы можете сделать, это угадать. Есть mb_detect_encoding, который не очень хорошо работает, а затем есть более сложные эвристики, такие как используемые браузерами, которые используют языковые подсказки.

...