将 UTF8 文本和数字转换为 UTF16-BE 以进行点击


Convert UTF8 Text and Numbers to UTF16-BE for Clickatell

我使用在线短信服务(Clickatell)来开发我使用的Web应用程序。我的主要语言是希腊语,所以我需要在发送之前在我的 php 文件中将短信文本转换为 UTF-16BE。例如,我需要转换文本

'"Το ραντεβού σας έχει μεταφερθεί στις 12-12-2016 και ώρα 18:25'"

03a403bf002003c103b103bd03c403b503b203bf03cd002003c303b103c2002003ad03c703b503b9002003bc03b503c403b103c603b503c103b803b503af002003c303c403b903c2002000310032002d00310032002d003200300310036002003ba03b103b9002003ce03c103b1002000310038003a00320035

我需要融合所有包含空格、符号和数字的内容。我找到了一些php命令,但它们只转换文本。

    $text=strtoupper(str_replace(array('"', ''u'), array('',''), json_encode('Το ραντεβού σας έχει μεταφερθεί στις 12-12-2016 και ώρα 18:25')));

使用上面的代码时,我得到以下结果:

03A403BF 03C103B103BD03C403B503B203BF03CD

03C303B103C2 03AD03C703B503B9 03BC03B503C403B103C603B503C103B803B503AF 03C303C403B903C2 2016-12 03BA03B103B9 03CE03C103B1 18:25

如果您注意到日期和时间以及所有空格都不是 unicode。

谁能告诉我如何用 unicode 获取我的整个短语?我如何使用 php 执行此操作?提前谢谢你

我不确定"他们只转换文本"是什么意思,但如果你想将UTF-8字符串转换为UTF-16BE,那么你可以试试:

iconv('UTF-8', 'UTF-16BE', $string);

或。。

mb_convert_encoding($string, 'UTF-16BE', 'UTF-8');

编辑:

由于您现在已经共享了一些代码,因此您的转换技术并不合理,除非您真的希望它像您拥有它一样表示。您的结果基本上是单个字节的十六进制表示形式,而不是字节本身。

编辑 2:

如果您确实需要指定格式的它,以下内容将为您完成:

$string = iconv('UTF-8', 'UTF-16BE', $string); // .. or mb_convert_encoding
$converted = '';
for ($i = 0; $i < strlen($string); $i++) {
    $converted .= sprintf('%02X', ord($string[$i]));
}