我在PHP中有一个字符串,如下所示:
INPUT =“Γιώργοανστείλειςαυτόακριβώς(:
它是一个混合字符串,同时包含GREEK和LATIN字符。我希望给定字符串中的所有字符都转换为此字符串
OUTPUT = 0022039303B903CE03C103B303BF002003B103BD002003C303C403B503AF03BB03B503B903C2002003B103C503C403CC002003B103BA03C103B903B203CE03C200200028003A
如何将输入转换为此类输出?
答案 0 :(得分:5)
我花了一段时间才弄明白,但似乎你想要做的是将UTF-8字符串转换为其UTF-16表示的大写二进制转储。就这么简单:
$input = '"Γιώργο αν στείλεις αυτό ακριβώς (:';
$output = mb_strtoupper(bin2hex(mb_convert_encoding($input, 'UTF-16BE', 'UTF-8')));
BE
后缀表示Big Endian,根据您的示例,它似乎是预期的字节顺序。
答案 1 :(得分:1)
你试过iconv吗?也许是这样的: (编辑)我明白你的主要目标是能够将这个转换后的字符串通过http传输到你的服务,在这种情况下你可以在结果上使用 base64_encode()。 请参阅完整的代码示例:
<?php
$string = str_replace(' ', '', "Γιώργο αν στείλεις αυτό ακριβώς");
$converted = iconv('UTF-8', 'UTF-16', $string);
$encoded = base64_encode($converted);
var_dump($encoded);
var_dump(iconv('UTF-16', 'UTF-8', base64_decode($encoded)));
?>
你会得到:
编码:字符串'/ v8DkwO5A84DwQOzA78DsQO9A8MDxAO1A68DuwO1A7kDwgOxA8UDxAPMA7EDugPBA7kDsgPOA8I ='(长= 76) 已解码:字符串'Γιώργοανστείλειςαυτόακριβώς'(length = 54)