【问题标题】:Output Weird Characters To Screen in PHP在 PHP 中将奇怪的字符输出到屏幕
【发布时间】:2013-01-24 12:24:15
【问题描述】:

我正在尝试向屏幕输出包含 ® ™ 等奇数字符的字符串。当我这样做时, 会替换所有奇数字符。我试过调查htmlentities(),但没有输出任何奇怪的字符。我知道我可以使用 HTML 代码,但这不适用于我的情况。

【问题讨论】:

  • 这看起来像是在 UTF-8 上下文中输出 ISO-8859-1 字符,但它需要更多信息。字符串从何而来?
  • 这个字符串来自我的 CMS (CQ5) 中的一个表单。
  • 你输出到终端吗?如果是,是哪个终端程序? Linux?腻子?
  • 信息还不够。你在哪里输出数据?在什么情况下?考虑显示一些代码。
  • 现在我只用一个局部变量进行测试:var_dump( htmlentities('foo ®®', ENT_QUOTES, "UTF-8") );

标签: php character symbols


【解决方案1】:

您正在进入字符编码领域。它让很多人感到困惑,所以这里有一些指导方针:

由于您正在处理 HTML,您可以始终使用htmlentities。这会给你类似的东西; &abc;Ӓ。这些字符将始终正确显示。

另一种方法是使用字符集编码。这意味着您必须确保以相同的字符编码输出所有字符,并向浏览器提供正确的字符编码提示。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

强制浏览器使用 UTF-8。你可以用 ISO-8859-1 代替,那是你的首选编码。

那么,如果您的所有输入都是 UTF-8,那么您的输出也应该是 UTF-8。如果不是,请转换它。 utf8_encode 会将字符串转换为 UTF-8。

【讨论】:

  • 我的网站中有meta 标签。我尝试过var_dump( htmlentities('foo ®®') );,但这会将string(0) "" 渲染到屏幕上。
  • 这很奇怪,它不应该那样做。你的源文件的字符编码是什么?
  • UTF-8。 &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt; 是我的标题中的内容。
  • 我尝试了var_dump( htmlentities('foo ®®', ENT_SUBSTITUTE, 'UTF-8') );,但结果显示为string(10) "foo ��"
  • 尝试使用以下编码保存您的 php 文件:UTF-8 如果没有 BOM,您可以使用 notepad++ 来做到这一点
【解决方案2】:
var_dump( htmlentities('foo ®®', ENT_QUOTES, "UTF-8") );

确保您的源文件是 UTF-8 编码的。

大多数 IDE 在“另存为”对话框或文件选项的某处提供“字符集”选项。

【讨论】:

    猜你喜欢
    • 2014-03-21
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多