Perl の バイト列→Unicode 処理について
ニパターンある
※バイト列の文字コードはUTF8とする。
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use Encode;
use Unicode::RecursiveDowngrade;
my $str = 'utf8';
#my $str = 'ユーティーエフ';
# Pattern A
utf8::decode($str); #これのみだと $str = 'utf8' は素通りされてフラグがたたない
utf8::upgrade($str); #これのみだとフラグはたつが $str = 'ユーティーエフ' は文字化けで戻せなくなる
# Pattern B
$str = decode_utf8($str); # Need use Encode;
if ( utf8::is_utf8($str) ) {
print "On\n";
}
else {
print "Off\n";
}
print Dumper($str);
my $rd = Unicode::RecursiveDowngrade->new;
my $strz = $rd->downgrade($str);
if ( utf8::is_utf8($strz) ) {
print "On\n";
}
else {
print "Off\n";
}
print Dumper($strz);
ex) http://subtech.g.hatena.ne.jp/miyagawa/20080218
ex) http://blog.livedoor.jp/dankogai/archives/51004472.html
ex) http://subtech.g.hatena.ne.jp/miyagawa/20060820/1156076116
ex2) http://d.hatena.ne.jp/dayflower/20080219/1203493616