Pregunta

Alguien puede ayudarme ?¿Cómo puedo obtener caracteres UCS2/HexEncoded?

como 'Hola' devolverá "00480065006C006C006F"

Estos son los valores codificados en hexadecimal:

0048 = H 0065 = E 006C = L 006C = L 006F = O*

También en árabe (!مرحبا عالم) devolverá 06450631062d0628064b06270020063906270644064500200021

¿Cómo puedo obtener el UCS2 codificado en php?

¿Fue útil?

Solución

mb_convert_encoding($cadena, 'UCS-2', 'automático') funciona correctamente para convertir la cadena, pero tendrás que hacer trabajo adicional para obtener el resultado adecuado en un navegador.

Necesitará cambiar el juego de caracteres de su salida para que coincida con UCS-2 para poder usar eco para enviarlo a una página.Además, es posible que necesite configurar el tipo de contenido mediante un meta etiqueta en el encabezado también.

He incluido tres ejemplos aquí en las siguientes variantes Unicode:UCS-2, UTF-16 y UTF-8;ya que no todos me funcionaron sin modificar Internet Explorer.Es posible que necesites almacenar tus archivos PHP en UTF-8 para obtener resultados adecuados.Además, tengo una versión en inglés de Windows, por lo que no puedo ingresar la cadena árabe en el formato RTL adecuado.Lo siento si tu hilo está confuso aquí.Te aseguro que si lo reemplazas en la ubicación indicada en mis comentarios, obtendrás el resultado adecuado.Finalmente, es posible que tenga problemas para ver UCS-2 y UTF-16 en Internet Explorer; parece haber algunas rarezas cuando la salida se recarga a través de un caché.Sin embargo, FireFox 3.5.5 funcionó para las tres codificaciones.Si realmente quieres crear una aplicación, te recomiendo que consideres usar UTF-8 en lugar de UCS-2.

Versión UCS-2

FireFox 3.5.5 (Vale, pero FireFox dice que es UTF-16BE en mi prueba).
Internet Explorer 7.0 (no está bien.No detecté/convertí el árabe correctamente).

<?php
header('Content-Type: text/html; charset=UCS-2');
mb_http_output('UCS-2');
echo mb_convert_encoding('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UCS-2" /></head><body>', 'UCS-2', 'auto');
echo mb_convert_encoding('encoding: ', 'UCS-2', 'auto');
echo mb_convert_encoding(mb_http_output(), 'UCS-2', 'auto');
echo mb_convert_encoding('<br />', 'UCS-2', 'auto');
// NOTE: Replace the string here with your phrase
$strTerm = '!مرحبا عالم';
echo mb_convert_encoding('$strTerm = '.$strTerm.'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('query string: '.$_SERVER['QUERY_STRING'].'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('original hex: '.bin2hex($strTerm).'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('transformed hex: '.bin2hex(mb_convert_encoding($strTerm, 'UCS-2', 'auto')).'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('</body>', 'UCS-2', 'auto');
?>

Versión UTF-16

FireFox 3.5.5 (100% bien)
Internet Explorer 7.0 (falla.Es posible que tenga que especificar el orden de bytes).

<?php
header('Content-Type: text/html; charset=UTF-16');
mb_http_output('UTF-16');
echo mb_convert_encoding('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-16" /></head><body>', 'UTF-16', 'auto');
echo mb_convert_encoding('encoding: ', 'UTF-16', 'auto');
echo mb_convert_encoding(mb_http_output(), 'UTF-16', 'auto');
echo mb_convert_encoding('<br />', 'UTF-16', 'auto');
// NOTE: Replace the string here with your phrase
$strTerm = '!مرحبا عالم';
echo mb_convert_encoding('$strTerm = '.$strTerm.'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('query string: '.$_SERVER['QUERY_STRING'].'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('original hex: '.bin2hex($strTerm).'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('transformed hex: '.bin2hex(mb_convert_encoding($strTerm, 'UTF-16', 'auto')).'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('</body>', 'UTF-16', 'auto');
?>

UTF-8

FireFox 3.5.5 (100% bien)
Internet Explorer 7.0 (100% bien)

<?php
header('Content-Type: text/html; charset=UTF-8');
mb_http_output('UTF-8');
echo mb_convert_encoding('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body>', 'UTF-8', 'auto');
echo mb_convert_encoding('encoding: ', 'UTF-8', 'auto');
echo mb_convert_encoding(mb_http_output(), 'UTF-8', 'auto');
echo mb_convert_encoding('<br />', 'UTF-8', 'auto');
// NOTE: Replace the string here with your phrase
$strTerm = '!مرحبا عالم';
echo mb_convert_encoding('$strTerm = '.$strTerm.'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('query string: '.$_SERVER['QUERY_STRING'].'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('original hex: '.bin2hex($strTerm).'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('transformed hex: '.bin2hex(mb_convert_encoding($strTerm, 'UTF-8', 'auto')).'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('</body>', 'UTF-8', 'auto');
?>

Otros consejos

De acuerdo con esta página web , la multi- módulo Byte String (mbstring) apoya UCS-2. Después de habilitar este módulo, puede utilizar la función mb_convert_encoding para convertir una cadena de una codificación a la otra.

de la función mb_convert_encoding :

string mb_convert_encoding  ( string $str  , string $to_encoding  [, mixed $from_encoding  ] )
Converts the character encoding of string str to to_encoding from optionally from_encoding . 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top