PHP中的十六进制到Unicode(\u014D到ō;)

PHP中的十六进制到Unicode(\u014D到ō;),php,unicode,hex,Php,Unicode,Hex,可能重复: 如何在PHP中将\u014D转换为ō 谢谢现在还不清楚你说“toō”是什么意思。如果您询问如何将其转换为不同的编码,那么一般的方法是使用该函数。014D是所需函数的(unicode),因此,如果您有一个包含字节014D的字符串,则可以使用该字符串 iconv('UCS-2', 'UTF-8', $s) 将UCS-2转换为UTF-8。同样,如果您想转换为不同的编码,尽管您需要注意,并非所有编码都将包含您正在使用的字符。您将从iconv文档中看到//TRANSLIT选项在这种情况下可

可能重复:

如何在PHP中将\u014D转换为ō


谢谢

现在还不清楚你说“toō”是什么意思。如果您询问如何将其转换为不同的编码,那么一般的方法是使用该函数。014D是所需函数的(unicode),因此,如果您有一个包含字节014D的字符串,则可以使用该字符串

iconv('UCS-2', 'UTF-8', $s)
将UCS-2转换为UTF-8。同样,如果您想转换为不同的编码,尽管您需要注意,并非所有编码都将包含您正在使用的字符。您将从iconv文档中看到//TRANSLIT选项在这种情况下可能会有所帮助


请注意,iconv采用的是字节序列,因此,如果您实际上有一个包含斜杠、u、0等的字符串。。。您需要首先将其转换为字节序列。

如果字符串中有转义字符,则可以使用凌乱的exec语句

$string = '\\u014D';
exec("\$string = '$string'");
这样,在解析字符串时,应该将Unicode转义序列识别并解释为Unicode字符


当然,除非绝对必要,否则永远不要使用exec。

这篇文章是用Python写的,但可能有帮助:)重复@borrible-似乎不正确,是否要重新测试?@ajreal-确保您正在测试UCS-2字节序列。@borrible-我尝试了您发布的代码,如果
$s='\u014D',已转换为无效中文characters@ajreal-您给出的代码不是将UCS-2字节序列放入$s,而是将a\后跟u后跟0等。。。如果您
echo bin2hex($s)
,您可以看到这一点。正如我在回答中提到的,iconv是为一个包含字节01和4D的字符串而设计的。@borrible-介意更新你的回答以确保将$s转换为UCS-2字节序列吗?