我使用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
。
但关于你的问题得到的评论:文件作者似乎不在乎使用正确的编码,而是决定使用(老式?(ä
之类的东西。
将字符串放入变量中,并使用以下函数。
$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后,这需要额外的一行代码。