samilac226:
¿Cómo puedo cambiar la codificación UTF-8 a partir de big endian sólo para los caracteres árabes a enviar mensajes SMS a través del servicio SMS? Este código no funciona.
mb_convert_encoding($str, "UCS-2BE", "auto");
El resultado debe ser similar a este
Marat Badykov:
Usted debe hacer lo siguiente:
comprobar la codificación y la presencia de caracteres árabes. Puede hacerlo así:
//$text - string that you need to convert if (mb_detect_encoding ($text) == "UTF-8" && mb_ereg('[\x{0600}-\x{06FF}]', $text)) { ... }
Convertir a cadena USC-2BE encoding.You puede utilizar iconv función
iconv("UTF-8", "UCS-2BE", $text)
Luego de desempaquetado al formato necesario (H * hexagonal - en su caso) y convertido a mayúsculas :
if (mb_detect_encoding ($text) == "UTF-8" && self::isArabic($text)) { $arr = unpack("H*hex", @iconv("UTF-8", "UCS-2BE", $text)); $text = strtoupper($arr["hex"]); }
Eso es. Deberia de funcionar.