Php 将unicode代码转换为UTF-8
我在文件中写入了以下字符串:Php 将unicode代码转换为UTF-8,php,unicode,encoding,Php,Unicode,Encoding,我在文件中写入了以下字符串: \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_replac
\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();
我们信任谷歌
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');
结果:
Антон Борисенко
使用
json\u 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;
我真的不知道这些编码:D结果实际上是Ŕí328;îîîđîĺęî
它在windows-1251中给出了答案,编码了它的2个参数的函数。省略它,让utf-8将参数更改为utf-8输出它在我的本地服务器上工作,没有其他地方:)我今晚会试试谢谢!没有标题的任何其他方法?后来我需要将其写入文件。@khernik:splash58找到了另一个方法,您得到的字符串是有效的,但浏览器理解它的方式是错误的:默认情况下,它不会假定它是UTF-8,这就是为什么我添加了头,以使浏览器理解这是一个UTF-8字符串。您可以将其保存到文件中,而不必担心该头。
<?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;