【问题标题】:Displaying Unicode character from it's number using PHP使用 PHP 从它的数字显示 Unicode 字符
【发布时间】:2013-05-29 12:09:37
【问题描述】:

好的,我有一个问题。有没有办法从它的唯一编号显示 Unicode 符号。例如。我有整数符号 (∫) & 它的 Unicode 数字 & HTML 代码分别是 'U+222B' 和 '& #8747;'我可以通过打印如下 HTML 代码来显示符号。

echo "& #8747;"; //Displays Integral [∫] symbol if we remove space after Ampersand.

但是使用 Unicode 数字,我们可以达到同样的效果吗?因为在我的一个网站中,字符编码不正确。它只显示如下所示的 Unicode 数字。

%u03A8 %u0D24 etc.

请分享您的想法。提前致谢。

【问题讨论】:

    标签: php unicode encoding character-encoding symbols


    【解决方案1】:
    %u03A8 %u0D24 etc.
    

    这看起来像 JavaScript 的 window.escape() 函数的输出。将您的 JavaScript 代码改为调用 window.encodeURIComponent(),并在必要时使用 urldecode() 在 PHP 端解码其输出。

    如果损坏的字符串已经存储在您的数据库中,您可以尝试使用类似以下的代码来清理它们:

    $s = preg_replace_callback('/(?:%u[0-9A-F]{4})+/', function ($m) {
        return mb_convert_encoding(
            hex2bin(str_replace('%u', '', $m[0])), 'UTF-8', 'UTF-16BE');
    }, $s );
    

    【讨论】:

      【解决方案2】:

      不确定这是否适用于您的客户,但值得一试:

      echo mb_convert_encoding('&#' . intval(0x0D24) . ';', 'UTF-8', 'HTML-ENTITIES');
      

      【讨论】:

      • 这可能是评论..不需要回答。
      • @silkfire %u0D24 和 %u03A8 的等效 Unicode 字符分别是 'ത' 和 'Ψ'。但是你的解决方案给出了'¨ $'!
      • 对不起。你能试试我的第三个解决方案吗?
      • @silkfire 谢谢。现在它显示正确。但我认为它以 unicode 数字 (%u0D24) 出现,因为 @ PleaseStand 指出的 Javascript 函数
      • 好的。只需选择最适合您的答案。接受并投票。
      猜你喜欢
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多