[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ковертировать из utf-8 utf-16
NegreM
Всем ДД!
Если класс отправки смс через smpp
И нужно чтоб с сайта отправляли смс в кириллице.
Возникло необходимость конвертировать переменную с сообщением в utf-16(в такой вид "АБВ")
Кто чем поможет, как можно конвертировать переменную из utf-8 в utf-16 ?

_____________
Моя мама запрещала мне в детстве рисовать в Paint, ссылаясь на то, "чтоб в компьютере краска не кончалась" :)
Winston
iconv() ?
NegreM
Все что выводить это >
при utf-8 и 뼼桴浬㸊㱢潤社਼桥慤㸊㱭整愠桴瑰ⵥ煵楶㴢捯湴敮琭瑹灥
при utf-16
с mb_convert_encoding та же самая история

_____________
Моя мама запрещала мне в детстве рисовать в Paint, ссылаясь на то, "чтоб в компьютере краска не кончалась" :)
NegreM
Проблему решил, смс приходят на кириллице.
Понимаю что топорный способ но в итоге, просто сначало из utf-8 перекидываю в win1251 а затем из win1251 в utf-16
Вдруг кому пригодиться
<?

// перекодировка unicode UTF-8 -> UTF-16
function utf8_utf16 ($s){
$out="";
$c1="";
$byte2=false;
for ($c=0;$c<strlen($s);$c++){
$i=ord($s[$c]);
if ($i<=127) $out.=$s[$c];
if ($byte2){
$new_c2=($c1&3)*64+($i&63);
$new_c1=($c1>>2)&5;
$new_i=$new_c1*256+$new_c2;
if ($new_i==1025){
$out_i=168;
}else{
if ($new_i==1105){
$out_i=184;
}else {
$out_i=$new_i-848;
}
}

$out.=chr($out_i);
$byte2=false;
}
if (($i>>5)==6) {
$c1=$i;
$byte2=true;
}
}






$out = convert_cyr_string($out,'w','i');
for ($myresult='', $i=0; $i<strlen($out); $i++) {
$charcode = ord($out[$i]);
$myresult .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$out[$i];
}
return $myresult;
}

$test="Тестовое сообщение";


echo utf8_utf16($test);

?>


_____________
Моя мама запрещала мне в детстве рисовать в Paint, ссылаясь на то, "чтоб в компьютере краска не кончалась" :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.