Fieds_labo1
perl-5.8
最終更新:
fieds_labo1
-
view
perl 5.8処理系
※まだぁ@@;
Windowsで動作するActivePerl5.8処理系について
5.8.6、5.8.8で動作確認。
Windowsで動作するActivePerl5.8処理系について
5.8.6、5.8.8で動作確認。
shift-jisテキストデータの処理を行っているperlプログラムを文字化けせずに動かす。
1.前提条件
1.前提条件
- ソースファイルはshift-jisで記述されている。
- ソースファイル内のダメ文字はエスケープ処置済み。
- 出力するHTMLの文字コードはshift-jis。
<meta http-equiv="Content-Type" content=text/html; charset=Shift_jis">
- フォーム入力はjcode.plでshift-jisに変換。
- shift-jisテキストデータを読み書きする。
3.方針
- use encoding "shiftjis"; は使わない。よそのモジュール(最近のはutfが多いと思う)を呼んでいると激しく危ないから。
- use Encode; の decode(),encode() を使う。
- use open は使わない。うまくいかないケースっていうのが、よくわからなかったから^^;
4.記述例
- テキストファイル入力時にエンコード指定。エンコードはshift-jisじゃなくてcp932。INからはUTF8フラグ付文字列を取得。
if(!open IN, "<:encoding(cp932)", "$text_file") { &error('ファイルが開けません'); }
- 入力フォームで入力した名前がテキストデータにあるか検索する場合。
$formin{'name'}はjcode.plのconvertでsjis変換されたデータ。 $text_data_nameはcp932エンコード指定で読み込んだテキスト。 $compare_word_utf = Encode::decode('cp932',$formin{'name'}); if($text_data_name =~ /$compare_word_utf/) {
- テキストデータを表示。UTF8フラグ付文字列をcp932に変換。フラグ落とし。
print "<td>".Encode::encode('cp932',$text_data_name)."</td>\n";