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


how to convert ISO 8859-1 Characters to UTF-8

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

网站:abc.com:

CửHàng芯片:RộGiáng sinh vớ我những vật phẩm trang tríNoelŞầy màu sắc củ芯片礼品店

但当我使用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

但关于你的问题得到的评论:文件作者似乎不在乎使用正确的编码,而是决定使用(老式?(&auml之类的东西。

将字符串放入变量中,并使用以下函数。

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

从粘贴的行判断,问题似乎是HTML实体,而不是字符编码。编码的字符对我来说很好。

您需要将这些HTML实体转换为编码字符。使用哪种工具取决于您的环境或编程语言。我认为仅靠CURL是做不到的。

PHP有htmlspecialchars_decode((。HTMLParser模块中的Python unescape((。

curl不转换任何内容,按"原样"下载

你看到的是字符实体,有效的html,以及将其转换为可读形式的浏览器

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

你可以试试这个:

html_entity_decode($string)

在此处查看更多信息:html_entity_decode

您的文件没有转换为其他编码。他们使用的是HTML字符实体。您需要将这些实体(如é(转换为UTF-8,如é。如果需要的话,在转换为UTF-8后,这需要额外的一行代码。