как конвертировать символы ISO 8859-1 в UTF-8 - PullRequest
0 голосов
/ 24 ноября 2011

Я использую CURL для получения контента с другого сайта, но я не знаю, почему он автоматически конвертируется из UTF-8 в ISO 8859-1, например:

site: abc.com:

Чип Хэн Чип Чип: R rn ràng đón Giáng sinh với những vẩt phẩm trang trí Noel my màu sắc của CHIPCHIP GIFT SHOP

Но когда я использую CURL, получаю контент из CURL, я получил следующее:

Cửa Hàng Chip Chip: Rộn ràng đón Giáng sinh với những vật phẩm trang trí Noel đầy màu sắc của CHIPCHIP GIFT SHOP

Так как же конвертировать его в UTF-8?

Ответы [ 6 ]

0 голосов
/ 09 мая 2018

Ваши файлы не конвертируются в другую кодировку. Они используют сущности символов HTML . Вам необходимо преобразовать эти объекты , например é, в UTF-8, например é. Это займет одну дополнительную строку кода после преобразования в UTF-8, если вам даже нужно это сделать.

0 голосов
/ 09 мая 2018

Вы можете попробовать это:

html_entity_decode($string)

Подробнее здесь: html_entity_decode

0 голосов
/ 24 ноября 2011

curl ничего не конвертирует, загружает вещи "как есть"

То, что вы видите, - это символьные объекты, действительный HTML-код и браузер, которые преобразуются в читаемую форму.

Вы можете проверить это, открыв файл, сохраненный curl в браузере. Это будет выглядеть как живая страница.

0 голосов
/ 24 ноября 2011

Судя по вставленной вами строке, проблема, похоже, связана с сущностями HTML, а не с символьным соединением. Закодированные символы выглядят хорошо для меня.

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

PHP имеет htmlspecialchars_decode () . Python unescape () из модуля HTMLParser.

0 голосов
/ 24 ноября 2011

Возьмите вашу строку в переменную и используйте следующую функцию.

$var = "";
echo utf8_encode($var);
0 голосов
/ 24 ноября 2011

Я бы порекомендовал использовать iconv.

iconv --list, чтобы получить список всех известных кодировок, и затем вы можете использовать iconv -f FROM_ENCODING -t TO_ENCODING, чтобы выполнить преобразование.Он также может читать из stdin и, следовательно, может быть подключен к curl.

Но что касается комментария, который вы получили на свой вопрос: похоже, автор файла не заботился об использовании правильной кодировки и решил придерживатьсяс (по старому стилю?) &auml и прочее.

...