我使用在线短信服务(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]));
}