URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8805
[ Назад ]

Исходное сообщение
"Перевод текста из UTF8 в UCS2"

Отправлено DarkTj , 16-Июл-10 11:13 
Привет всем!

1)Нужно перевести текст из кодировки UTF8 в UCS2, в Perl -е

Покопался с нете нашел нечто такое, но не работает:

====
use Encode qw/encode decode/;

$ucs2 = encode("UCS-2LE", $text);
====


2)Подскажите, как в Perl-e проверить кодировку? Т.е. есть ли какая нибудь функция в которую можно задаёшь текст, а она тебе выводит кодировку?


Заранее благодарен!


Содержание

Сообщения в этом обсуждении
"Перевод текста из UTF8 в UCS2"
Отправлено DarkTj , 16-Июл-10 16:28 
Сделал так и все заработало:

use Encode;
$ucs2 = encode("UTF-16be", $text);



"Перевод текста из UTF8 в UCS2"
Отправлено NuINu , 18-Июл-10 23:08 
>[оверквотинг удален]
>
>$ucs2 = encode("UCS-2LE", $text);
>====
>
>
>2)Подскажите, как в Perl-e проверить кодировку? Т.е. есть ли какая нибудь функция
>в которую можно задаёшь текст, а она тебе выводит кодировку?
>
>
>Заранее благодарен!

проверка кодировки относиться к методам дешифровки, проверяется в перле так же как и везде - любой дешифрующей методикой, лично я бы использовал метод анализа на основе статистически встречающихся в тексте букв и буквенных пар, но можно делать и на основе словаря. творите )


"Перевод текста из UTF8 в UCS2"
Отправлено Mr. Mistoffelees , 11-Авг-10 00:02 
Привет,

Вообще-то есть на свете и iconv, хотя конкретное решение зависит от задачи - но можно, наверно, и без Perl обойтись.

WWell,


"Перевод текста из UTF8 в UCS2"
Отправлено Sugar , 11-Авг-10 11:19 
>Привет,
>
>Вообще-то есть на свете и iconv, хотя конкретное решение зависит от задачи
>- но можно, наверно, и без Perl обойтись.
>
>WWell,

и как же iconv проверяет кодировку? Это довольно не трививальная задача.


"Перевод текста из UTF8 в UCS2"
Отправлено pavlinux , 30-Авг-10 12:21 
> и как же iconv проверяет кодировку?

Он её не проверяет, а дефолтная берется из getenv( LANG );


> Это довольно не трививальная задача.

TESTWORD="Тестирование"

FOR I IN $LIST_OF_KNOWN_CODING
   DO
      FOR J IN $ASPELL_WORDLIST
          DO
              TMPSTR = encode(I, J);
              RET = STRCMP(TMPSTR, TESTWORD);
                   IF ( RET == 0 )
                      RETURN I;
     ENDO
ENDO


как-то так