在PHP中将utf-8字符串转换为UTF16实体

时间:2012-10-02 11:00:47

标签: php

我有这段代码

<?php

$message = "ΓΙΑ ΝΑ ΔΟΥΜΕ ΤΙ ΘΑ ΔΟΥΜΕ.";
$tmp = mb_convert_encoding($message, 'UTF-16BE', 'utf-8');
echo $tmp;
?>

$ message值包含一些希腊语单词。我想要这样的东西“0393 0399 0391 0020 039D 0391 0020 0394 039F 03A5 039C 0395 0020 03A4 0399 0020 0398 0391 0020 0394 039F 03A5 039C 0395”但我在浏览器中得到一些带有问号的黑色钻石。

我试图按照这些说明(Stack Overflow question)但没有运气。我还尝试将文件的编码从UTF-8更改为UTF-8而没有BOM,但再次没有运气。

在搜索时我找到了这个惊人的网页Unicode Code Converter,所以我可以测试一下我是否得到了正确的实体。

2 个答案:

答案 0 :(得分:3)

您可以使用json_encode()提取十六进制代码:

echo strtoupper(str_replace(array('"', '\u'), array('',' '), json_encode('ΓΙΑ ΝΑ ΔΟΥΜΕ ΤΙ ΘΑ ΔΟΥΜΕ.')));
//  0393 0399 0391  039D 0391  0394 039F 03A5 039C 0395  03A4 0399  0398 0391  0394 039F 03A5 039C 0395.

这适用于任何语言。

答案 1 :(得分:1)

mbstring支持UTF-16,您可以使用mb_convert_encoding

$str = mb_convert_encoding($str, "utf-8", "UTF-16BE");