如何将ISO 8859-1字符转换为UTF-8

时间:2011-11-24 08:13:44

标签: php utf-8 iso

我使用CURL从其他网站获取内容,但我不知道为什么它会自动从UTF-8转换为ISO 8859-1,如下所示:

网站:abc.com:

  

CửaHàngShipChip:RộnràngđónGiángsinhvớnihữngvậtphẩmtrangtríNoelđầymàusắcủủCHIPCHIPGIFT 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?

6 个答案:

答案 0 :(得分:0)

我建议使用iconv

iconv --list为您提供了所有已知编码的列表,然后您可以使用iconv -f FROM_ENCODING -t TO_ENCODING进行转换。它也可以从标准输入读取,因此可以插入curl

但关于你对你的问题的评论:似乎文件作者不关心使用正确的编码并决定坚持(旧式?)&auml和东西。

答案 1 :(得分:0)

将您的字符串放在变量中并使用以下函数。

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

答案 2 :(得分:0)

从您粘贴的行判断,问题似乎是HTML实体,而不是字符enconding。编码的字符看起来很好。

您需要将这些HTML实体转换为编码字符。使用哪种工具取决于您的环境或编程语言。我不认为只用CURL就可以完成。

PHP有htmlspecialchars_decode()。来自HTMLParser模块的Python unescape()

答案 3 :(得分:0)

curl不会转换任何内容,“按原样”下载内容

您看到的是字符实体,有效的HTML以及转换为可读形式的浏览器。

您可以通过在浏览器中打开curl保存的文件来检查这一点。它看起来像实况页面。

答案 4 :(得分:0)

你可以试试这个:

html_entity_decode($string)

在此处查看更多内容:html_entity_decode

答案 5 :(得分:0)

您的文件未转换为其他编码。他们正在使用HTML character entities。您需要convert those entities,例如é到UTF-8,例如é。如果您甚至需要这样做,那么在转换为UTF-8之后,这会占用一行额外的代码。