shoorick: (Default)
[personal profile] shoorick
  1. Читая man, выяснил, что офисный Юникод — это UCS-2LE. А если в ём переставить байты местами — это USC-2BE, или просто UCS-2, или ISO-10646-1.
  2. Простейший перловый декодер из офисного Юникода в windows-1251:
    #!/usr/bin/perl -w
    use strict;
    
    open(my $fh, '<:encoding(ucs2_le)', $ARGV[0]);
    my @txt = <$fh>;
    binmode(STDOUT, ":encoding(cp1251)");
    print join('', @txt);
    И что самое главное, не нужен ни внешний софт, ни доп. библиотеки — всё уже есть!
  3. upd: а с использованием библиотеки Encode ещё проще:
    #!/usr/bin/perl -w
    use strict;
    use Encode 'from_to'; 
    my $str = ".\cD=\cD8\cD:\cD>\cD4\cD";
    from_to($str, "UCS-2LE", "cp1251");
    print $str;

Date: 2006-06-30 12:24 am (UTC)
ext_659893: Sapa (Default)
From: [identity profile] sappa.livejournal.com
Можно еще чуток короче :)

perl -Mencoding=ucs2_le,STDOUT,cp1251 -pe 1
[Error: Irreparable invalid markup ('<in.txt>') in entry. Owner must fix manually. Raw contents below.]

Можно еще чуток короче :)

perl -Mencoding=ucs2_le,STDOUT,cp1251 -pe 1 <in.txt >out.txt

Ага

Date: 2006-06-30 04:36 am (UTC)
From: [identity profile] shoorick.livejournal.com
О сколько нам открытий чудных… :-)

Date: 2007-03-12 01:37 pm (UTC)
From: [identity profile] sharifulin.livejournal.com
Единственное ограничение такого решения - это версия Perl без лаера (PerlIO), т.е. версии ниже 5.8.0.
А так вот это решение - просто супер:
perl -Mencoding=ucs2_le,STDOUT,cp1251 -pe 1
[Error: Irreparable invalid markup ('<in.txt>') in entry. Owner must fix manually. Raw contents below.]

Единственное ограничение такого решения - это версия Perl без лаера (PerlIO), т.е. версии ниже 5.8.0.
А так вот это решение - просто супер:
<b>perl -Mencoding=ucs2_le,STDOUT,cp1251 -pe 1 <in.txt >out.txt</b>

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 21st, 2026 02:52 pm
Powered by Dreamwidth Studios