【问题标题】:PHP Display Special CharactersPHP 显示特殊字符
【发布时间】:2011-06-07 10:42:59
【问题描述】:

当我从 xml 文件输出文本 每平方米 3.99 英镑 时,浏览器显示 每平方米 3.99 英镑。XML 文件是 UTF-8 格式。我想知道如何修复 这个。

【问题讨论】:

  • 输入的 XML 编码是否正确?
  • 检查浏览器的菜单。所有浏览器都有一个设置,您可以在其中指定编码。将其更改为 UTF-8,您的浏览器应该可以正常显示。
  • 我的浏览器设置为 utf-8。但是没有运气

标签: php


【解决方案1】:

确保您输出的是 UTF-8。这种转换听起来像你的源是 UTF-8,但你告诉浏览器期待别的东西(Latin1?)。您应该向浏览器发送一个指示 UTF-8 即将出现的标头,并且您应该具有正确的元标头:

 <?php
 header ('Content-type: text/html; charset=utf-8');
 ?>
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 <body>
 <?php echo "£3.99 per M²"; ?>
 </body>
 </html>

这应该可以正常工作。

【讨论】:

    【解决方案2】:

    您应该对 html 实体进行编码:

    你可以试试

    htmlentities($str, ENT_QUOTES, "UTF-8");
    

    查看here 以获得完整参考

    如果您有时仍然遇到问题,您还必须使用 utf8_decode() 对字符串进行解码 所以你可以试试:

    $str = utf8_decode($str);
    $str = htmlentities($str, ENT_QUOTES);
    

    【讨论】:

    • 如果 XML 实际上是用 UTF-8 编码的,则不需要这样做。
    • 不,他不应该。他应该只为页面设置正确的字符集,请参阅 Berry Langerak 的回答。
    • 我不认为对 html 实体进行编码是一种不好的做法,我一直对 UTF-8 编码有疑问,通常唯一有效的方法是 decode+htmlentities。
    • @Nicola Peluchetti,这意味着你通常会用它做无用的工作,Berry 的回答也会对你有用。
    • @Nicola:现在我明白了。但是,在查看您的代码时,您首先将字符串从 UTF-8 转换为 latin-1,但随后您错误地将实体替换功能与 UTF-8 编码而不是 latin-1 编码一起使用。我想你混合了一些东西。首先用实体替换字符,然后更改编码(为 latin-1 或 us-ascii)。
    猜你喜欢
    • 2013-03-21
    • 2013-06-06
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多