【发布时间】:2013-07-09 03:29:23
【问题描述】:
我有一个数据库,它存储带有 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 "™";
请指导我了解 Unicode 转义字符串以实现 HTML 友好的最佳方法。不久前我为 JavaScript 做过类似的事情,但是 JavaScript 有一个用于转义和取消转义的内置函数。
我不知道任何类似功能的 PHP 函数。我读过ord 函数,但它只返回给定字符的ASCII 字符代码,因此™ 或™ 的显示不正确。我希望这个函数足够通用,可以应用于任何包含有效 Unicode 字符的字符串。
【问题讨论】:
标签: php unicode html-escape-characters