Perl
UTF8フラグに関する情報
UTF8フラグは何が間違っているのか?
- 「文字列」という用語をアプリケーションプログラマとインタプリタの間で共有できないものにしてしまった。
- システムが利用者に合わせてくれず、利用者がシステムに合わせなければならない。
- アプリケーションプログラマは自分が扱う文字列の他にインタプリタのための文字列も扱う必要が生じて、仕事が増えた。
- UTF8フラグの状態遷移(ONからOFF、およびOFFからON)は直交しておらず、事態をさらに複雑にした。
- せっかくUnicodeを開発してモードを排除したにも関わらず、UTF8フラグによってモード式に戻ってしまう。
文字とコンピュータ
- コンピュータは文字を扱うことはできないため、個々の文字に割当てられた数値を扱う。
- 数値の処理結果を利用して「文字を扱っていることにしている」のは人間の脳の働きである。
- とあるバイト列がバイナリデータなのか文字列なのかは人間にしか区別することはできない。
- 心のないコンピュータにはこれらの区別を行うことができない。
- UTF8フラグはこれらの2つをコンピュータによって区別する試みであったが、必ずしも利用者の心と一致する結果とはならない。
どのように解決するか?
- システム的にはバイナリのバイト列と文字列を区別なく扱い、それらの区別は人間が行うという従来の方法に戻す。
- 文字列はバイナリのバイト列としても扱えるのはもちろんのこと、バイナリのバイト列は文字列としても扱えるように戻す。
- UTF8フラグを使用しないようにする。
将来に向かって
PerlのUTF8フラグは必要なものですか?