トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS   ログイン

UTF8フラグ の変更点

#author("2022-09-12T09:59:23+09:00","","")
#author("2022-09-28T15:18:53+09:00","","")
[[Perl]] | [[Sjis.pm]] | [[EUCJP.pm]] | [[UTF2.pm]] | [[jacode.pl]] | [[Char.pm]]

''UTF8フラグに関する情報''
-[[UTF8 フラグあれこれ:http://d.hatena.ne.jp/dayflower/20080219/1203493616]]
-[[図解: Perl と Unicode 文字列:http://d.hatena.ne.jp/dayflower/20080620/1213925271]]
-[[Perl 5.8.x Unicode関連:http://www.rwds.net/kuroita/program/Perl_unicode.html]]
-[[Perl5.8でUTF-8のメモ:http://tech.bayashi.jp/archives/entry/perl/2008/002104.html]]
-[[use Encode;:http://e8y.net/mag/015-encode/]]
-[[perl - utf8::is_utf8("\x{ff}") == 0:http://blog.livedoor.jp/dankogai/archives/51004472.html]]
-[[perl - use utf8; #って何だ?:http://blog.livedoor.jp/dankogai/archives/51224106.html]]

''UTF8フラグは何が間違っているのか?''
-「文字列」という用語をアプリケーションプログラマとインタプリタの間で共有できないものにしてしまった。
-システムが利用者に合わせてくれず、利用者がシステムに合わせなければならない。
-アプリケーションプログラマは自分が扱う文字列の他にインタプリタのための文字列も扱う必要が生じて、仕事が増えた。
-UTF8フラグの状態遷移(ONからOFF、およびOFFからON)は直交しておらず、事態をさらに複雑にした。
-せっかくUnicodeを開発してモードを排除したにも関わらず、UTF8フラグによってまたモード式に戻ってしまう。

''文字とコンピュータ''
-コンピュータは文字を扱うことはできないため、個々の文字に割当てられた数値を扱う。
-数値の処理結果を利用して「文字を扱っていることにしている」のは人間の脳の働きである。
-とあるバイト列がバイナリデータなのか文字列なのかは人間にしか区別することはできない。
-心のないコンピュータにはこれらの区別を行うことができない。
-UTF8フラグはこれらの2つをコンピュータによって区別する試みであったが、必ずしも利用者の心と一致する結果とはならない。

''どのように解決するか?''
-システム的にはバイナリのバイト列と文字列を区別なく扱い、それらの区別は人間が行うという従来の方法に戻す。
-文字列はバイナリのバイト列としても扱えるのはもちろんのこと、バイナリのバイト列は文字列としても扱えるように戻す。
-一度に扱う符号化方式はひとつだけにする。
-UTF8フラグを使用しないようにする。

''将来に向かって''
-同様の失敗を繰り返さないよう、UTF8フラグおよびこれらの知見を公開し保存する。
-[[WindowsでPerl 5.8/5.10を使うモンじゃない:http://www.aritia.jp/hizumi/perl/perlwin.html]]
-[[Shift-JISテキストを正しく扱う:http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm]]
-[[UTF-8フラグの立て方・降ろし方:http://www.rakunet.org/tsnet/TSabc/18/546.html]]
-[[Perl::utf8.pm:http://blonde.ddo.jp/object/glob.pl/2010/11/18/21/17/12]]
-[[utf8::is_utf8 considered harmful:http://subtech.g.hatena.ne.jp/miyagawa/20080218/1203312527]]

PerlのUTF8フラグは必要なものですか?
#vote(UTF8フラグは必要不可欠[1],UTF8フラグはないほうがよい[9],わからない[1],その他[0])
#vote(UTF8フラグは必要不可欠[1],UTF8フラグはないほうがよい[9],わからない[2],その他[0])