キッズプレート、パスタおかわり

プログラミングやデジモノについてあれこれ
--.--.-- --:--|カテゴリ:スポンサー広告| コメント(-)

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2007.02.05 18:56|カテゴリ:Perlコメント(0)

Perl 5.8での日本語文字コードの扱いについて


Perl 5.8で日本語を利用するさいに、もっとも簡単で単純だと思われる方法を以下にまとめます。

PerlのソースファイルはUTF8で記述し、以下をソースの先頭で宣言します。
use utf8;  #-ソースがUTF8だという宣言
binmode STDOUT, ":encoding(cp932)"; #-画面に出力したい文字コード
binmode STDERR, ":encoding(cp932)"; #-エラー出力に使いたい文字コード
binmode STDIN, ":encoding(cp932)"; #-標準入力から入ってくる文字コード


 上記の「:encoding(文字コード)」の文字コード部分に指定できるコードの一部は以下のとおりです。

euc-jp
shiftjis
cp932
MacJapanese
utf8
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE


■ファイルハンドルをオープンする場合にはエンコードを必ず指定します。

open(IN ,"<:encoding(shiftjis)", "read.txt");  #-読込元ファイルの文字コードを指定
open(OUT, ">:encoding(shiftjis)", "write.txt"); #-書込先ファイルの文字コードを指定


 ただしUTF8のファイルを読書するときは、

open(IN,"<:utf8","read.txt);


 ↑のように「encoding」の部分をはずします。理由は「use utf8」を先頭で宣言しているからです。「use utf8」を宣言するとPerlの内部は基本的に全てUTF8の文字列として処理されます。ファイルの文字コードがUTF8の場合はエンコードの指定をすると多重エンコードになってしまいます。
※use utf8をしていない場合はソースの文字コードと文字コードが異なるハンドルへの全角文字出力にデコード処理が必要です。デコード処理を行いたい場合は先頭の宣言に以下のような2行を追加し、デコードを行いたい箇所でdecode関数を使います

use Encode;
use Encode 'decode', 'encode';



print OUT decode('utf8',"デコード処理n");


 以上がごくごく簡単なPerl 5.8での日本語の取り扱いです。誤字脱字、間違った説明やもっといい方法を知っている等々、なにかございましたら「macjperlあっとgmail.com」までご連絡ください<(_ _)>
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

プロフィール

ひらくん Author:ひらくん
どもども、ひらんくんどす。
日々まったり過ごしております。
仕事はDTP関連のスプリクト&アプリケーション開発。
Follow happyscript on Twitter

ブログ内検索



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。