概要
- 青空文庫のテキストファイル、HTMLファイルの文字コードをSJISからUTF8に変換します。
- SJISにないため記号や画像として埋め込まれている漢字で文字として取り込めるものは取り込みます。
前準備
- Windowsパソコンにrubyをインストール
- 下のバッチファイルとaozora.csvを同じフォルダに準備
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | REMSJISからUTF8に変換.bat ruby-x"%~f0" gotoend #!ruby #encoding: utf-8 Encoding.default_external='UTF-8' $stderr=open("err.log","w") require'fileutils' h=open(__dir__+"/aozora.csv").readlines. map{|e|e.chomp.split(/(?<!,),/)}.to_h h.transform_keys!{|k|k.split("-").map{|f|f.to_i}} Dir.glob('**/*.{txt,html}'){|f| begin s=open(f).read.encode(Encoding::UTF_8,Encoding::SJIS). gsub(/charset=Shift_JIS/i,"charset=utf-8"). gsub(/(※[#[^[]]*])|<imgsrc[^<>]+※[^<>]+"gaiji">/){|e| if/((\d)-(\d+)-(\d+))/=~e n=$1.split("-").map{|e|e.to_i} e=h[n]ifh[n] end e} FileUtils.cp(f,"~"+f) File.write(f,"\uFEFF"+s) rescue next end} __END__ :end |
使い方
- 変換したい青空文庫のテキストファイル、HTMLファイルをバッチファイルのあるフォルダ以下に準備しておく
- バッチファイルをダブルクリックして実行すると変換が実行されます
- 頭に「~」がついたファイルが元のファイルのバックアップとして作成されます
分かっている不具合
- HTMLファイルで目次が崩れる(「div class=”jisage_5″」をなんとかしなくてはいけないような気がする)
コメント