espérant que quelqu'un peut me diriger dans la direction de l'endroit où je vais mal avec ceci:Conversion UCS2 (Unknown LE ou BE) au format numérique Hex UTF-8 En utilisant Perl
J'ai une chaîne de (ce que Je crois) est UCS2 hexadécimal, mais le fournisseur ne peut pas me dire si c'est UCS2-LE ou UCS2-BE.
comme ceci: 0627062E062A062806270631
Il se traduit par ceci: اختبا
En arabe apparemment ... mais personne ne importe si j'essayez de le convertir sur six pans, en utilisant comme UCS2 droite (LE ou BE) ou pratiquement tout ce que je peux penser sous le soleil, je ne peux pas le transformer en natif-perl UTF-8 afin que je puisse ensuite ré-encoder comme UTF-8 standard (format natif de notre système).
code:
my $string = "0627062E062A062806270631";
my $decodedHex = hex($string);
#NEAREST
my $perlDecodedUTF8 = decode("UCS-2BE", $decodedHex);
my $utf8 = encode('UTF-8',$perlDecodedUTF8);
open(ARABICTEST,">ucs2test.txt");
print(ARABICTEST $perlDecodedUTF8);
print("Done!");
close(ARABICTEST);
Il émet des caractères incompréhensibles pour le moment. Maintenant, une idée que je suis venu avec était de diviser la chaîne en question en sections de 4 caractères (c'est-à-dire par code hexadécimal), mais même en essayant cela avec une valeur hexadécimale UCS2 connue ne semble pas fonctionner.
Également essayé de forcer le codage de sortie, pas de joie là non plus.
Merci!
Avez-vous essayé [Unicode :: String] (http://search.cpan.org/~gaas/Unicode-String-2.09/String.pm)? – fnokke
@fnokke: NON! Unicode :: String est un module obsolète conçu pour fournir un support Unicode aux anciennes versions de Perl qui ne l'ont pas intégré. Personne ne devrait écrire du nouveau code qui l'utilise. – cjm
@cjm: Bon à savoir! Merci – fnokke