※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

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

perlにおける日本語の扱い」の最新版変更点

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

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

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