PHP将unicode转换为十六进制

PHP将unicode转换为十六进制,php,unicode,hex,Php,Unicode,Hex,一个应用程序想让我插入字符串作为使用十六进制值正确编码的文本。,编码为Unicode\u No\u Compression 例如,对于Sześćsiedem来说,正确的十六进制字符串是0053007A0065015B01007002000730069006500640006D, dźbło=01790064017A00620142006F 不带特殊字符的字符串 =0053007400720069006E0067002000770069007400680020006E006F00200007300

一个应用程序想让我插入字符串作为使用十六进制值正确编码的
文本。
,编码为
Unicode\u No\u Compression

例如,对于
Sześćsiedem
来说,正确的十六进制字符串是
0053007A0065015B01007002000730069006500640006D

dźbło
=
01790064017A00620142006F

不带特殊字符的字符串
=
0053007400720069006E0067002000770069007400680020006E006F002000073007000650063006100690061006C00200006300680061007002007

我试着使用MySQL
HEX()
/
UNHEX()
dechex()
PHP,但无法找到如何进行此转换。有什么想法吗?

试试这个:

$out = implode("",array_map(function($x) {return sprintf("%04X",ord($x));},str_split($in)));

一个班轮;)

我猜,您实际上看到的是UCS-2编码的十六进制版本。因此:

php > echo strtoupper(bin2hex(iconv('UTF-8', 'UCS-2', 'Źdźbło')));
01790064017A00620142006F

哦它不是多字节安全的,是吗?
ord
str_split
都不是。我得到的结果略有不同,知道为什么吗?小端和大端问题,这取决于机器。尝试
UCS-2BE
显式使用big-endian。