人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perlについての質問です。

ある、HTMLファイル(S-JIS形式保存)で、書かれたファイルが1000ファイルほどあり、その中に「ある単語」が存在するかどうかをマッチで調べています。

マッチはEUCでなければ、動作しないとの事なのでEUCにHTMLと「ある単語」を変換して比較をしています。

ここで、ある問題が起きました。

EUCに変換する際に、SJIS上の文字がEUCでは別の文字になってしまい、変な文字がひっかかってしまうのです。

そこで、SJISそのままでマッチをする方法はないか、質問致します。

環境は、
Windows XP SP2
Perl ver 5.8.8
です。

●質問者: zachouR
●カテゴリ:コンピュータ インターネット
✍キーワード:EUC HTML Perl S-JIS SJIS
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kidd-number5
●35ポイント

>マッチはEUCでなければ、動作しない

というのがどういうことなのかよくわかりませんが・・・

内部的にunicodeに変換してから両者を比較すればよいと思います。

http://www.fl.reitaku-u.ac.jp/~schiba/perl/perlEncoding.html

◎質問者からの返答

すいません、どこかのサイトだったとおもうのですが、「マッチの場合はEUCにする。」

と書いてあったので。

自分の勘違いでした。


2 ● b-wind
●35ポイント

Perl 5.8.x Unicode??A

Perl 5.8 以降ではマルチバイトに対応していますから SJIS のままで記述、正規表現のマッチは出来ますよ。


スクリプトの最初の方で、

use encoding 'shiftjis';

とかやっておけば標準入力を SJIS として受け取ってくれます。


ファイルを open するときはこう。

open FILE, '<:encoding(shiftjis)', 'sample.txt';
◎質問者からの返答

ありがとうございます!

うまく行きそうです!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ