文字コード操作の前提知識文字列には2種類の状態がある
注意するのはUTF8フラグと文字コードは無関係な事。例えば「UTF8フラグ付きなSJISの文字列」「UTFフラグなしなUTF8の文字列」というのはあり得る。「バイト列」「内部文字列」という用語を使った方が分かりやすい。 内部文字列とバイト列の違い内部文字列$str = 'あいうえお'; # $str が内部文字列の状態であると仮定すると、 say length($str); # length()は$strを5文字と解釈する。 バイト列$bytes = 'あいうえお'; # $bytes がバイト列の状態であると仮定すると、 say length($bytes); # length()は$strを10文字と解釈する。 内部文字列とバイト列の使い分け
内部文字列とバイト列の状態を変換する方法バイト列から内部文字列へmy $str = Encode::decode('utf8', $bytes); 内部文字列からバイト列へmy $bytes = Encode::encode('utf8', $str); 内部文字列・バイト列の変換をする際に文字コードの変換も一緒に出来る例えば、 my $str = decode('sjis',$bytes); でUTF8フラグなしなSJISの文字コードの文字列をUTF8フラグ付きなUTF8の文字列する。 |
|