将Unicode字符转换为“\ uxxxx”表单

时间:2012-11-28 21:31:32

标签: php unicode

我正在尝试将像À这样的字符转换为其转义格式,例如\u00c0。我知道这可以用json_encode完成,但该函数会向特殊字符添加反斜杠。 (我实际上并不希望得到一个json对象,只是字符串转换):

$str = 'À ß \ Ć " Ď < Ĕ';

对于上面的字符串,它将返回

$str = '\u00c0 \u00df \\ \u0106 \" \u010e < \u0114';

如果我stripslashes,它还会在每个uxxxx之前删除一个。{/ p>

此特定转换是否有功能?或者最简单的方法是什么?

4 个答案:

答案 0 :(得分:2)

您可以使用以下代码进行前进和后退

代码

if (!function_exists('codepoint_encode')) {
    function codepoint_encode($str) {
        return substr(json_encode($str), 1, -1);
    }
}

if (!function_exists('codepoint_decode')) {
    function codepoint_decode($str) {
        return json_decode(sprintf('"%s"', $str));
    }
}

如何使用

echo "\nUse JSON encoding / decoding\n";
var_dump(codepoint_encode("我好"));
var_dump(codepoint_decode('\u6211\u597d'));

输出

Use JSON encoding / decoding
string(12) "\u6211\u597d"
string(6) "我好"

答案 1 :(得分:1)

$str = 'À ß \ Ć " Ď < Ĕ';

echo trim(preg_replace('/\\\\([^u])/', "$1", json_encode($str)), '"');
// ouptuts: \u00c0 \u00df \ \u0106 " \u010e < \u0114

我知道它使用json_encode(),但它是转换为\ uXXXX

的最简单方法

答案 2 :(得分:0)

对@ cryptic的回答略有修改:

<强>脚本

$str = 'À ß \ Ć " Ď < Ĕ \\\\uxxx';
echo trim(preg_replace('/\\\\([^u])/', "$1", json_encode($string, JSON_UNESCAPED_SLASHES)), '"');

<强>输出

\u00c0 \u00df \ \u0106 " \u010e < \u0114 \\uxxx

答案 3 :(得分:0)

function convertChars($str) {
    return json_decode("\"$str\"");
}