【问题标题】:how to convert ISO 8859-1 Characters to UTF-8如何将 ISO 8859-1 字符转换为 UTF-8
【发布时间】:2012-01-05 10:29:29
【问题描述】:

我使用 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 礼品店

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

【问题讨论】:

  • 那不可能是 ISO-8859-1;您无法在该代码页中表达所有这些口音。它可能已经是 UTF-8,只是带有一些字符实体,如 sarnold 提及。

标签: php utf-8 iso


【解决方案1】:

我建议使用iconv

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

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

【讨论】:

  • 我尝试使用 iconv,但我总是收到此错误Notice: iconv(): Detected an illegal character in input string in D:\UniServer\www\deal\haha.php on line 5 C 这是我的代码:echo iconv("UTF-8", "ISO-8859-1", $text);
  • 对不起,部分是我的错。您没有指定您正在为 php 标签使用 PHP excpet,所以我假设您正在使用 shell。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    从您粘贴的行来看,问题似乎出在 HTML 实体上,而不是字符编码。编码后的字符对我来说很好。

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

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

    【讨论】:

    • 我忘了告诉你,它对我来说很好,但是当我将它转换为 ascii 来制作 seo URL 时,我遇到了问题。示例:Rộn ràng đón Giáng sinh => ron rang don giang sinh (true)我的问题Rộn ràng đón Giáng sinh => Rộn ragraveng đoacuten Giaacuteng sinh (wrong)
    【解决方案4】:

    curl 不转换任何东西,“按原样”下载东西

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

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

    【讨论】:

    • 更好:查看您正在查看的页面的来源。
    【解决方案5】:

    你可以试试这个:

    html_entity_decode($string)
    

    在此处查看更多信息:html_entity_decode

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        猜你喜欢
        • 2014-08-29
        • 1970-01-01
        • 1970-01-01
        • 2014-07-04
        • 2020-01-25
        • 2011-08-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多