什么是\ n以及如何解码它?

时间:2010-03-14 20:04:06

标签: php encoding

所以我有一个用另一种语言的字符串,大部分看起来很棒,但部分字符编码不正确。如何将文字字符串\u0026#39;n转换为PHP中的unicode(?)等效项?

3 个答案:

答案 0 :(得分:6)

以下PHP函数会将\u0026#39;n翻译为'n。这用于与Google Translate API进行通信。

function unescapeUTF8EscapeSeq($str) {
    return preg_replace_callback("/\\\u([0-9a-f]{4})/i",
        create_function('$matches',
            'return html_entity_decode(\'&#x\'.$matches[1].\';\', ENT_QUOTES, \'UTF-8\');'
        ), $str);
}

答案 1 :(得分:4)

将它分开,看起来已经通过至少两个不同的编码过程。从\u0026开始 - 这是unicode代码点十六进制26,或者是十进制的38。前128个unicode代码点与ASCII相同,因此这是ASCII 38,一个&符号。

现在我们有'n,它看起来像是字符39的HTML或XML权限,它是单引号字符'

给我们'n。我无法看到如何进一步解码 - 上下文是否提供了进一步的线索?

答案 2 :(得分:2)

要更新@rook的答案以使用内联回调而不是贬低的create_function方法,您会得到:


                    function unescapeUTF8EscapeSeq($str)
                    {
                        return preg_replace_callback(
                            "/\\\u([0-9a-f]{4})/i",
                            function ($matches) {
                                return html_entity_decode('&#x' . $matches[1] . ';', ENT_QUOTES, 'UTF-8');
                            },
                            $str
                        );
                    }