• ベストアンサー

UTFのHTMLファイルを複数キーワードで連続置換

書かれている内容は日本語なんですが、難しい漢字を表示させる都合でUTF-8で作成されているhtmlファイル(1ファイル)があります。 書かれている内容を、下記のようなカンマ区切りのテキストファイル(UTF-8?)を用意して、複数のペア(1,000組程)を連続して置換したいのですが、シェアウェアなどで手軽に行う方法はありますか? 宜しくお願い致します。 (個数) (旧) (新)  1  01html,a_html  2  02html,b_html  3  03html,c_html  ・   ・   ・   ・   ・   ・  1,000   ・   ・ 

質問者が選んだベストアンサー

  • ベストアンサー
noname#19175
noname#19175
回答No.2

ShiftJISで利用できるなら、PerlですべてのファイルをUTF8からShiftJISに変換することが出来ます。 filesというディレクトリの中にUTF8で書かれたHTMLファイルをすべて入れておいて、 filesディレクトリと同じ場所にchange.plというファイルを作成し、 change.pl   files/01.html      /02.html      /03.html      /~ change.plの内容を以下のようにします。 ------ここから------- use Encode; while(<files/*>){ open(FP, "+<", $_) or next; local $/=""; my $data = <FP>; Encode::from_to($data, "utf8", "shiftjis"); seek FP, 0, 0; print FP $data; truncate(FP, tell(FP)); close FP; } print "OK\n"; --------ここまで------ コマンドプロンプトでchange.plのあるフォルダから > perl change.pl として、"OK"が表示されたら、filesの中にあるファイルがすべてUTF8からShiftJISに変換されていることを確認してください。 (変換できていなくてもOKが表示されますので、ご了承ください) (元々のファイルがUTF8で書かれていない場合は文字化けしますので、 バックアップを取ってから作業してください) エラーチェックなどもしてないですし、すべての環境で動作しないかもしれませんが、 一応、WindowsXP、ActivePerl5.8(Perl5.8)の環境で確認しています。 もとのUTF8に戻すときは、change.plの Encode::from_to($data, "utf8", "shiftjis"); という部分を Encode::from_to($data, "shiftjis", "utf8"); に変更してから、コマンドプロンプトで perl change.pl を実行してください。

toukaede
質問者

お礼

お礼が遅くなり大変申し訳ありません。 教えて頂いた方法で ・ファイルの文字コードをUTF8->SJISに変更 ・置換 ・文字コードをSJIS->UTF8に変更 という流れで頑張ってみたいと思います。 コードまで書いて頂いて、本当に有り難うございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#19175
noname#19175
回答No.1

「置換」が、“何”と“何”を置換するのか理解しかねますが、 定義の仕方が自分のオリジナル、または専用の場合は、一般的には専用のソフトが必要です。 ファイル名の変換でも、テキストファイルの内容の変換でも、 「文字」を扱うのであれば、Perlの得意分野ですし、 CGI作成をしている方や会社に制作を依頼してみてはいかがでしょうか。

toukaede
質問者

お礼

回答有り難うございす。 >「置換」が、“何”と“何”を置換するのか理解しかねますが、 申し訳有りません。 htmlファイルに記述されている文字列です。 grepというんでしょうか、複数のファイルを 同時に検索置換するのではなくて、 1つのファイルのなかの文字列をいろいろな パターンで置換する必要があります。 (例えばaタグの参照先を変更します。) 環境はwindows2000です(すみません)。 vectorで置換ツールを探してみました。 予めカンマ区切りやタブ切りでテキストファイルに 置換のセットを用意しておいて、上から順に置換する というツールはいくつか見つかるのですが、sjisの テキストファイルは扱えてもUTFのファイルだとどうもうまく行かないようでした。 perlは一応インストールしてみて、置換のためのスクリプトを書いてみようとは思っているのですが、なにせこれから勉強をするという段階で自信がありませんでした。 できれば自力で何とかしたいとは思っています。 やっぱりperlの勉強でしょうか。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A