我使用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?
答案 0 :(得分:0)
我建议使用iconv
。
iconv --list
为您提供了所有已知编码的列表,然后您可以使用iconv -f FROM_ENCODING -t TO_ENCODING
进行转换。它也可以从标准输入读取,因此可以插入curl
。
但关于你对你的问题的评论:似乎文件作者不关心使用正确的编码并决定坚持(旧式?)ä
和东西。
答案 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)
答案 5 :(得分:0)
您的文件未转换为其他编码。他们正在使用HTML character entities。您需要convert those entities,例如é
到UTF-8,例如é。如果您甚至需要这样做,那么在转换为UTF-8之后,这会占用一行额外的代码。