- 青空文庫のテキストファイル、HTMLファイルの文字コードをSJISからUTF8に変換します。
- SJISにないため記号や画像として埋め込まれている漢字で文字として取り込めるものは取り込みます。
- Windowsパソコンにrubyをインストール
- バッチファイルとaozora_gaiji.txtを同じフォルダに準備
- 変換したい青空文庫のテキストファイル、HTMLファイルをそのフォルダ以下に準備しておく
REM SJISからUTF8に変換.bat
ruby -x "%~f0"
goto end
#!ruby
#encoding: utf-8
Encoding.default_external = 'UTF-8'
$stdout=open("tmp.log","w")
$stderr=open("err.log","w")
require 'fileutils'
h=open(__dir__+"/aozora_gaiji.txt").readlines.
map{|e|e.chomp.split(/(?<!,),/)}.to_h
h.transform_keys!{|k| k.split("-").map{|f|f.to_i}}
Dir.glob('**/*.{txt,html}'){|f|
next if /aozora_gaiji.txt$/=~f
ar,s=[],""
puts f+":"
begin
s=open(f).read.encode(Encoding::UTF_8,Encoding::SJIS).
gsub(/charset=Shift_JIS/i,"charset=utf-8").
gsub(%r!(※[#[^[]]*])|<img [^<>]+※[^<>]+"gaiji" />!){|e|
if /((\d)-(\d+)-(\d+))/=~e
n=$1.split("-").map{|k| k.to_i}
s=e.gsub(%r|.*(※\([^()]*\)).*|,"\\1")
e=h[n] if h[n]
s=e+" => "+s
ar << s
end
e}
FileUtils.cp(__dir__+"/"+f,__dir__+"/"+f+"~")
File.write(f,"\uFEFF"+s)
ar.uniq.each{|e| puts e}
rescue
next
end
puts ""
}
__END__
:end
- バッチファイルをダブルクリックして実行すると変換が実行されます
- 末尾に「~」がついたファイルが元のファイルのバックアップとして作成されます
- 変換した埋め込み文字の一覧をtmp.logで確認できます
コメント