как преобразовать символы ISO 8859-1 в UTF-8

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

сайт: abc.com:

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

Но когда я использую 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?

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

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

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

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

 $var = ""; echo utf8_encode($var); 

Судя по линии, которую вы вставили, проблема, похоже, связана с объектами HTML, а не с символом. Кодированные символы выглядят хорошо для меня.

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

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

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

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

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