Надеюсь, что кто-то может указать мне, в каком направлении я ошибаюсь:
У меня есть строка (во что я верю) с шестнадцатеричным кодированием UCS2, но поставщик не может сказать мне, еслиэто UCS2-LE или UCS2-BE.
Примерно так: 0627062E062A062806270631
Это переводится так: اختبا
По-арабски, по-видимому ... но неважно, япопробуйте преобразовать его из шестнадцатеричного, используя его как прямой UCS2 (LE или BE) или практически что-нибудь еще, о чем я могу думать под солнцем, я не могу превратить его в native-perl UTF-8, чтобы потом можно было перекодироватькак стандарт UTF-8 (собственный формат нашей системы).
Код:
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);
В данный момент выводит бессмысленные символы.
Теперь пришла одна идеябыло разделить рассматриваемую строку на 4-символьные секции (т. е. на шестнадцатеричный код), но даже попытка выполнить это с отдельным известным шестнадцатеричным значением UCS2, похоже, не работает.
Также попытался принудительно вызватьвыходная кодировка, радости там тоже нет.
Спасибо!