Amazon Search とかを EUC ベースから UTF8 ベースで実装し直したのですが、場合によって length や substr 等の文字列関数で処理が違うことが判明。備忘録として記事にしました。 Perl5.8 では Unicode 文字列に対して UTF8 フラグという内部データを設けて、その有無によって文字単位で扱うかバイト単位で扱うかを決定しています。また UTF8 フラグの ON/OFF は utf8 モジュールのutf8::encode() と utf8::decode() によって操作できるようになっています。 バイト単位でUnicode文字列を扱いたいときは、utf8::encode() によって、UTF8 フラグを OFF に、文字単位でUnicode文字列を扱いたいときは、utf8::decode() によって、UTF8 フラグを ON にする必要があります