【问题标题】:Converting unicode codes to UTF-8将 unicode 代码转换为 UTF-8
【发布时间】:2015-05-10 16:40:56
【问题描述】:

我在一个文件中写入了以下字符串:

\u0410\u043d\u0442\u043e\u043d \u0411\u043e\u0440\u0438\u0441\u0435\u043d\u043a\u043e

我想用 UTF-8 可读字符替换它。我该怎么做?

文件本身采用 UTF-8 格式。 unicode 代码中的字符串是西里尔字母。

我尝试过 utf_encode()、json_decode()、mb 函数……没有任何效果。

编辑:

这是我尝试过的:

echo html_entity_decode(preg_replace("/U\+([0-9A-F]{4})/", "&#x\\1;", '\u0410\u043d\u0442\u043e\u043d \u0411\u043e\u0440\u0438\u0441\u0435\u043d\u043a\u043e'), ENT_NOQUOTES, 'UTF-8') . '<br>';
echo utf8_encode('\u0410\u043d\u0442\u043e\u043d \u0411\u043e\u0440\u0438\u0441\u0435\u043d\u043a\u043e') . '<br>';
echo json_decode('"' . '\u0410\u043d\u0442\u043e\u043d \u0411\u043e\u0440\u0438\u0441\u0435\u043d\u043a\u043e' . '"'); 
        die();

输出是:

\u0410\u043d\u0442\u043e\u043d \u0411\u043e\u0440\u0438\u0441\u0435\u043d\u043a\u043e
\u0410\u043d\u0442\u043e\u043d \u0411\u043e\u0440\u0438\u0441\u0435\u043d\u043a\u043e
ĐĐ˝ŃОн ĐĐžŃиŃонкО

【问题讨论】:

    标签: php unicode encoding


    【解决方案1】:

    Гугл вам в помощь :) 我们信任谷歌

    function decodeUnicode($s, $output = 'utf-8') 
    { 
        return preg_replace_callback('#\\\\u([a-fA-F0-9]{4})#', function ($m) use ($output) { 
            return iconv('ucs-2be', $output, pack('H*', $m[1])); 
        }, $s); 
    } 
    
    echo decodeUnicode('\u0410\u043d\u0442\u043e\u043d \u0411\u043e\u0440\u0438\u0441\u0435\u043d\u043a\u043e', 'windows-1251');
    

    结果:

    Антон Борисенко
    

    【讨论】:

    • 我真的不明白那些编码 :D 结果实际上是Ŕíňîí Áîđčńĺíęî
    • 它在 windows-1251 编码中给出答案
    • 它的 2na arg 函数。省略它有 utf-8
    • 将参数更改为 utf-8 输出 ĐĐ˝ŃОн ĐĐžŃиŃонкО
    • 它可以在我的本地服务器上运行,没有其他地方了 :) 我今晚试试
    【解决方案2】:

    使用json_decode函数:

    <?php
    
    $str = '\u0410\u043d\u0442\u043e\u043d \u0411\u043e\u0440\u0438\u0441\u0435\u043d\u043a\u043e';
    $str = json_decode('"' . $str . '"');
    
    header('Content-Type: text/plain; charset=utf-8');
    echo $str;
    

    输出:Антон Борисенко

    【讨论】:

    • 谢谢!任何其他方法,没有标题?之后我需要将其写入文件。
    • @khernik: splash58 找到了另一种方法,你得到的字符串是有效的,但是浏览器理解它的方式是错误的:它不认为它默认是 UTF-8,这就是我添加的原因header 让浏览器明白这是一个 UTF-8 字符串。您可以将其保存到文件中,而不必担心该标题。
    猜你喜欢
    • 2017-06-20
    • 2012-06-20
    • 2013-03-23
    • 1970-01-01
    • 2020-06-07
    • 2018-07-19
    • 2010-12-24
    • 1970-01-01
    相关资源
    最近更新 更多