php - 打印 Unicode 字符 PHP

标签 php unicode html-escape-characters

我有一个数据库,它存储带有 Unicode 字符的视频游戏名称,但我不知道如何在将这些 Unicode 字符打印到 HTML 响应时正确转义它们。

例如,当我打印名称为 Uncharted 的所有游戏时,我会得到:

Uncharted: Drake's Fortuneâ„¢
Uncharted 2: Among Thievesâ„¢
Uncharted 3: Drake's Deceptionâ„¢

但它应该显示:

Uncharted: Drake's Fortune™
Uncharted 2: Among Thieves™
Uncharted 3: Drake's Deception™

我运行了一个快速的 JavaScript 转义函数来查看 是哪个 Unicode 字符,并发现它是 \u2122

如果我能让 字符正确显示,我完全转义字符串中的每个字符都没有问题。我的猜测是以某种方式找到字符串中每个字符的十六进制表示,并让 PHP 像这样呈现 Unicode 字符:

print "&#x2122";

请指导我完成 Unicode 转义字符串以使其对 HTML 友好的最佳方法。前段时间我为 JavaScript 做过类似的事情,但是 JavaScript 有一个内置的转义和取消转义函数。

不过,我不知道有任何具有类似功能的 PHP 函数。我读过 ord函数,但它只返回给定字符的 ASCII 字符代码,因此 显示不正确。我希望此函数足够通用以适用于任何包含有效 Unicode 字符的字符串。

最佳答案

看起来您内部有 UTF-8 编码的字符串,PHP 正确输出它们,但您的浏览器无法自动检测编码(它决定使用 ISO 8859-1 或其他编码)。

最好的方法是通过发送相应的 HTTP header 来告诉浏览器正在使用 UTF-8:

header("content-type: text/html; charset=UTF-8");  

然后,您可以保持其余代码不变,而不必对实体进行 html 编码或造成其他困惑。

如果需要,您可以另外使用 <meta> 在生成的 HTML 中声明编码。标签:

  • <meta http-equiv=Content-Type content="text/html; charset=UTF-8">用于 HTML <=4.01
  • <meta charset="UTF-8">用于 HTML5

HTTP header 优先于 <meta>标签,但如果将 HTML 保存到 HD 然后在本地读取,后者可能会有用。

关于php - 打印 Unicode 字符 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17539412/

相关文章:

javascript - 从输入字段读取属性时 HTML 编码丢失

iphone - 从 IOS 应用程序中的字符串中删除 '\'

html - 在字符串 (PowerShell) 中转义 HTML 特定字符的最佳方法是什么?

php - 如何更新 mysql 中的 bool 值?

input - 使用希腊字母作为变量名

php - 进行 Google plus API 调用时收到 HTTP 401 Unauthorized

尝试从 SFTP 服务器流式传输文件时出现 Python Paramiko UTF-8 错误

python - 向后解码 Unicode 文本

javascript - 使用 jquery 显示数据库结果的 php 循环中的特定文本

php - 通过 PHP 连接到使用 cpanel 创建的 MySQL 数据库