プロが教える店舗&オフィスのセキュリティ対策術

書かれている内容は日本語なんですが、難しい漢字を表示させる都合でUTF-8で作成されているhtmlファイル(1ファイル)があります。

書かれている内容を、下記のようなカンマ区切りのテキストファイル(UTF-8?)を用意して、複数のペア(1,000組程)を連続して置換したいのですが、シェアウェアなどで手軽に行う方法はありますか?

宜しくお願い致します。

(個数) (旧) (新)
 1  01html,a_html
 2  02html,b_html
 3  03html,c_html
 ・   ・   ・ 
 ・   ・   ・ 
1,000   ・   ・ 

A 回答 (2件)

「置換」が、“何”と“何”を置換するのか理解しかねますが、


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

回答有り難うございす。

>「置換」が、“何”と“何”を置換するのか理解しかねますが、

申し訳有りません。
htmlファイルに記述されている文字列です。
grepというんでしょうか、複数のファイルを
同時に検索置換するのではなくて、
1つのファイルのなかの文字列をいろいろな
パターンで置換する必要があります。
(例えばaタグの参照先を変更します。)

環境はwindows2000です(すみません)。

vectorで置換ツールを探してみました。
予めカンマ区切りやタブ切りでテキストファイルに
置換のセットを用意しておいて、上から順に置換する
というツールはいくつか見つかるのですが、sjisの
テキストファイルは扱えてもUTFのファイルだとどうもうまく行かないようでした。

perlは一応インストールしてみて、置換のためのスクリプトを書いてみようとは思っているのですが、なにせこれから勉強をするという段階で自信がありませんでした。

できれば自力で何とかしたいとは思っています。
やっぱりperlの勉強でしょうか。
ありがとうございました。

お礼日時:2006/03/19 21:38

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
を実行してください。
    • good
    • 0
この回答へのお礼

お礼が遅くなり大変申し訳ありません。

教えて頂いた方法で

・ファイルの文字コードをUTF8->SJISに変更

・置換

・文字コードをSJIS->UTF8に変更

という流れで頑張ってみたいと思います。
コードまで書いて頂いて、本当に有り難うございました。

お礼日時:2006/03/23 12:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!