【发布时间】:2012-10-11 20:34:49
【问题描述】:
可能重复:
How to convert text to unicode code point like \u0054\u0068\u0069\u0073 using php?
我正在尝试将所有不适合 7 位 ANSI 字符的字符转换为转义形式 \uN,其中 N 是它的十进制值。这是我想出的:
private static function escape($str) {
return preg_replace_callback('~[\\x{007F}-\\x{FFFF}]~u',function($m){return '\\u'.ord($m[0]);},$str);
}
我已经尝试过使用 Gamma 等字符,
echo self::escape('Γ');
但是我得到了\u206 而不是\u915。我不知道我哪里出错了......想法?
实际上,ord() 函数似乎没有给我或我想要的值,或者我的 .php 文件上的编码错误?
【问题讨论】:
-
应该已经阅读了
ord页面上的第一条评论; ca3.php.net/manual/en/function.ord.php -
这是一种一种的方法,但它是一种可怕的方法,就在我挖掘出正确方法的时候去做。
-
@DaveRandom:从 2004 年开始,页面底部还有另一个似乎有效。
-
@mario:我认为我的解决方案看起来比该页面上的解决方案更干净、更高效 :)
-
一直在使用类似的东西:
return preg_replace("/[^\\x{0020}-\\x{007F}]/ue", "'\\u'.current(unpack('H*', iconv('UTF-8', 'UCS-2BE', '$0')))", $var);