「perlにおける日本語の扱い」の編集履歴(バックアップ)一覧はこちら

perlにおける日本語の扱い」(2008/01/06 (日) 13:11:09) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

Perl の文字コード関係 perl ソースの中に,日本語文字を指定したい場合. 次のように指定するのが便利: use open IN => ":encoding(shiftjis)", OUT => ":encoding(euc-jp)"; use encoding "shiftjis", STDIN => "euc-jp", STDOUT => "utf8"; 重要: use open を use encoding より前に記述すること. - use open では,次の表現を用いる. -- ":encoding(shiftjis)" -- ":encoding(euc-jp)" -- ":encoding(iso-2022-jp)" -- ":encoding(utf8)" - use encoding では,次の表現を用いる. -- "shiftjis" -- "euc-jp" -- "iso-2022-jp" -- "utf8" - use open で,IN と OUT に同じものを指定するときには, use open ":encoding(shiftjis)"; などと書ける. - use encoding で,3つとも同じものを指定するときには, use encoding "shiftjis"; などと書ける. - perl の文字列の内部表現は,UTF-8 を元にしていて,それをちょっと変えた ものになっているらしい.その詳細は知らなくても良いようになっている. - 文字列リテラルに日本語を使いたい場合などで, ソースファイルをUTF-8以外で記述する場合には, use encoding "shiftjis" など ("shiftjis" または "euc-jp" または "iso-2022-jp") を使う. こうすると, -- 指定した文字列は,自動的に perl の文字列内部表現になる. したがって,例えば s/動力性能/foo/ のようなものが安全に動作する.(注: shifjisの「能」の2バイト目は バックスラッシュと同じ) -- STDIN と STDOUT は,自動的に shiftjis とみなされる.(読んだ後は perl の内部表現になる).注: STDERR は対象外. これで,STDIN と STDOUT は,カバーされる.その他のファイル入出力 も同様に処理したい場合には, use open ":encoding(shiftjis)"; が便利. 重要: これは,「use encoding "shiftjis";」よりも前に記述すること. これによって,入出力とも,open したものは,shiftjis の読み書きが 仮定される.すなわち,入力については,shiftjisで書かれてあるという前提 のもと,読んだ後は perl の内部表現になる.出力は,perl の内部表現 から shiftjis への変換が行われる. 出力は別のコーディングにしたいと言うときには, use open IN => ":encoding(shiftjis)", OUT => ":encoding(euc-jp)"; のようにすることもできる.もっと一般には, open(FD1, "foo.txt"); binmode(FD1, ":encoding(shiftjis)"); open(FD2, ">bar.txt"); binmode(FD2, ":encoding(euc-jp)"); のようにする.なお,UTF-8 は,":encoding(utf8)" ではなく,":utf8" である. この場合,use open はいらない. STDINとSTDOUT は,「use open」では制御できず,「use encoding」を使わなくては ならない.独立にエンコーディングを指定するには use encoding "shiftjis", STDIN => "euc-jp", STDOUT => "utf8"; のようにする.なお, use encoding "..." が無い場合には, binmode(STDIN, ":encoding(shiftjis)"); binmode(STDOUT, ":encoding(euc-jp)"); なども動作するようである.
perl ソースの中に,日本語文字を指定したい場合, 次のように指定するのが便利: use open IN => ":encoding(shiftjis)", OUT => ":encoding(euc-jp)"; use encoding "shiftjis", STDIN => "euc-jp", STDOUT => "utf8"; 重要: use open を use encoding より前に記述すること. - use open では,次の表現を用いる. -- ":encoding(shiftjis)" -- ":encoding(euc-jp)" -- ":encoding(iso-2022-jp)" -- ":encoding(utf8)" - use encoding では,次の表現を用いる. -- "shiftjis" -- "euc-jp" -- "iso-2022-jp" -- "utf8" - use open で,IN と OUT に同じものを指定するときには, use open ":encoding(shiftjis)"; などと書ける. - use encoding で,3つとも同じものを指定するときには, use encoding "shiftjis"; などと書ける. - perl の文字列の内部表現は,UTF-8 を元にしていて,それをちょっと変えた ものになっているらしい.その詳細は知らなくても良いようになっている. - 文字列リテラルに日本語を使いたい場合などで, ソースファイルをUTF-8以外で記述する場合には, use encoding "shiftjis" など ("shiftjis" または "euc-jp" または "iso-2022-jp") を使う. こうすると, + 指定した文字列は,自動的に perl の文字列内部表現になる. したがって,例えば s/動力性能/foo/ のようなものが安全に動作する.(注: shifjisの「能」の2バイト目は バックスラッシュと同じ) + STDIN と STDOUT は,自動的に shiftjis とみなされる.(読んだ後は perl の内部表現になる). 注: STDERR は対象外. これで,STDIN と STDOUT は,カバーされる.その他のファイル入出力 も同様に処理したい場合には, use open ":encoding(shiftjis)"; が便利. 重要: これは,「use encoding "shiftjis";」よりも前に記述すること. これによって,入出力とも,open したものは,shiftjis の読み書きが 仮定される.すなわち,入力については,shiftjisで書かれてあるという前提 のもと,読んだ後は perl の内部表現になる.出力は,perl の内部表現 から shiftjis への変換が行われる. 出力は別のコーディングにしたいと言うときには, use open IN => ":encoding(shiftjis)", OUT => ":encoding(euc-jp)"; のようにすることもできる.もっと一般には, open(FD1, "foo.txt"); binmode(FD1, ":encoding(shiftjis)"); open(FD2, ">bar.txt"); binmode(FD2, ":encoding(euc-jp)"); のようにする.なお,UTF-8 は,":encoding(utf8)" ではなく,":utf8" である. この場合,use open はいらない. STDINとSTDOUT は,「use open」では制御できず,「use encoding」を使わなくては ならない.独立にエンコーディングを指定するには use encoding "shiftjis", STDIN => "euc-jp", STDOUT => "utf8"; のようにする.なお, use encoding "..." が無い場合には, binmode(STDIN, ":encoding(shiftjis)"); binmode(STDOUT, ":encoding(euc-jp)"); なども動作するようである.

表示オプション

横に並べて表示:
変化行の前後のみ表示:
人気記事ランキング
目安箱バナー