Конвертируйте текст и цифры UTF8 в UTF16-BE для Clickatell

Я использую онлайн-сервис смс (Clickatell) для веб-приложения, которое я использую. Мой основной язык — греческий, поэтому мне нужно конвертировать в своем php-файле текст SMS в UTF-16BE, прежде чем я отправлю его. Например мне нужно конвертировать текст

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

в

03a403bf002003c103b103bd03c403b503b203bf03cd002003c303b103c2002003ad03c703b503b9002003bc03b503c403b103c603b503c103b803b503af002003c303c403b903c2002000310032002d00310032002d0032003000310036002003ba03b103b9002003ce03c103b1002000310038003a00320035

Мне нужно конвертировать все, включая пробелы, символы и цифры.
Я нашел несколько команд php, но они конвертируют только текст.

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

При использовании приведенного выше кода я получаю следующий результат:

03A403BF 03C103B103BD03C403B503B203BF03CD 03C303B103C2 03AD03C703B503B9 03BC03B503C403B103C603B503C103B803B503AF 03C303C403B903C2 12-12-2015 033B3 03B3 03B3S3

Если вы заметили дату и время, а также все пробелы не в Unicode.

Может кто-нибудь сказать мне, как получить всю мою фразу в Unicode? Как я могу сделать это с php?
заранее спасибо

0

Решение

Я не уверен, что вы подразумеваете под «они конвертируют только текст», но если вы хотите конвертировать 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]));
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]