PHP vs Perl: Как перекодировать из utf-8 в win-1251

4.7.2015 - 3525 просмотров ;)

в PHP все делалось так:


$b = iconv("UTF-8","windows-1251", $a );

В Perl делаеться так:


use Encode;
$b = Encode::encode('cp1251',$a);

Пояснения:
Из коробки Perl не умеет конвертировать, поэтому оптимально подключить лишь Encode. Кстати можно было написать и так:


use Encode qw(encode);
$b = encode('cp1251',$a);

В этому случае код перекодировки стал более приятным, однако потерянный неймспейс в дальнейшем мог бы спровоцировать непонятки.

Ну и как видно название кодировочки разное. В PHP iconv универсальна, а в случае с Perl не совсем ясно из какой кодировки происходит конверт, поэтомувообще гвооря правильнее написать так:


$title = Encode::encode('cp1251',$a) if Encode::is_utf8 ($a);

В этом случае конверт будет происходить только если задетектиться UTF в строке, что собственно и лучше честно говоря.

Да, понимание у Perl несколько сложнее, надо что-то подключать, что дает в данном случае гибкость Perl не совсем ясно, однако в результат код Perl может оказаться короче и приятнее на взгляд.

Статьи из раздела, Видеочат рулетка