3

我有这个代码

<?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 035”,但在浏览器中会出现一些带有问号的黑色菱形。

我试图按照这些说明(堆栈溢出问题)但没有运气。我还尝试将文件的编码从 UTF-8 更改为没有 BOM 的 UTF-8,但还是没有运气。

在搜索时,我发现了这个惊人的网页Unicode 代码转换器,这样我就可以测试我是否得到了正确的实体。

4

2 回答 2

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.

这适用于任何语言。

于 2012-10-02T11:09:09.040 回答
1

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

$str = mb_convert_encoding($str, "utf-8", "UTF-16BE");
于 2012-10-02T11:02:57.280 回答