Question

Quelqu'un peut-il m'aider ?comment pourrais-je obtenir UCS2/HexEncoded caractères

comme "Bonjour" sera de retour "00480065006C006C006F"

Ce sont les HexEncoded valeurs:

0048 = H 0065 = e 006C = l 006C = l 006F = o*

Aussi en arabe (!مرحبا عالم) sera de retour 06450631062d0628064b06270020063906270644064500200021

Comment je peux obtenir le codé UCS2 en php?

Était-ce utile?

La solution

mb_convert_encoding($str, "UCS-2', 'auto') fonctionne correctement pour convertir la chaîne, mais vous aurez à faire un travail supplémentaire pour obtenir la bonne sortie dans un navigateur.

Vous aurez besoin de changer le jeu de caractères de votre sortie pour correspondre à l'UCS-2 afin d'être en mesure d'utiliser echo à la sortie d'une page.Aussi, vous devrez définir le Type de Contenu par l'intermédiaire d'un meta dans la balise d'en-tête ainsi.

J'ai inclus trois exemples ici dans l'unicode suivants variantes:UCS-2, UTF-16 et UTF-8;que pas tous d'entre eux ont travaillé pour moi, sans tordre dans Internet Explorer.Vous pourriez avoir besoin de stocker vos fichiers PHP en UTF-8 afin d'obtenir des résultats corrects.Aussi, je suis sur une version anglaise de Windows, donc je ne peux pas entrer dans votre arabe chaîne dans le bon RTL forme.Je suis désolé si votre chaîne est tronquée ici.Je vous assure que si vous le remplacer à l'emplacement indiqué par mes commentaires, vous pouvez obtenir le bon résultat.Enfin, vous pourriez avoir de la difficulté à visionner UCS-2 et UTF-16 dans internet explorer - il semble y avoir quelques "bizarreries" lorsque la sortie est rechargée par l'intermédiaire d'un cache.Cependant, FireFox 3.5.5 a travaillé pour tous les trois codages.Si vous êtes sérieux au sujet de faire une appli, je recommande fortement que vous envisagez d'utiliser l'UTF-8 au lieu de l'UCS-2.

UCS-2 Version

FireFox 3.5.5 (Ok, mais FireFox dit que c'est de l'UTF-16BE sur mon test).
Internet Explorer 7.0 (Pas Ok.N'a pas détecter/convertir l'arabe correctement.)

<?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');
?>

UTF-16 Version

FireFox 3.5.5 (100% Ok)
Internet Explorer 7.0 (Échec.Peut-être spécifier l'Ordre des Octets.)

<?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% Ok)
Internet Explorer 7.0 (100% Ok)

<?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');
?>

Autres conseils

Selon cette page web , le Multi- byte module de chaîne (mbstring) supporte UCS-2. Après avoir activé ce module, vous pouvez utiliser la fonction mb_convert_encoding pour convertir une chaîne de codage une à l'autre.

de la fonction 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 . 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top