仕事上必要な工夫など、備忘録として残します。
[Ruby] Shift-JIS/UTF-8(BOM)/UTF-8(NBOM)を相互変換する
#! ruby -Ks # coding:windows-31j #! /usr/bin/env ruby require 'nkf' inf=ARGV[0] linesep=ARGV[1] f = open(inf, "r") str = f.read f.close unless NKF.guess(str)==NKF::UTF8 || NKF.guess(str)==NKF::SJIS then puts "Only for UTF-8 or Shift-JIS" exit end if linesep==nil then linesep="-Lu" end # -Lw:Windows(CRLF) -Lu:UNIX(LF) -Lm:Mac(CR) print " Option of Line Separator : "+linesep+" " end doc_nbom=NKF.nkf('-w80 '+linesep,str) doc_sjis=NKF.nkf('-s '+linesep,str) NBOMf=File.dirname(inf)+"/"+File.basename(inf,".*")+"_NBOM"+File.extname(inf) BOMf=File.dirname(inf)+"/"+File.basename(inf,".*")+"_BOM"+File.extname(inf) SJISf=File.dirname(inf)+"/"+File.basename(inf,".*")+"_SJIS"+File.extname(inf) ot = open(NBOMf,"w") ot.print doc_nbom print " Created UTF-8 without BOM(NBOM) Formated File " print " "+NBOMf+" " ot.close ot2 = open(BOMf,"w") ot2.print("") ot2.print doc_nbom print " Created UTF-8 with BOM Formated File " print " "+BOMf+" " ot2.close ot3= open(SJISf,"w") ot3.print doc_sjis print " Created Shift-JIS Formated File " print " "+SJISf+" " ot3.close
sjis_utf.rb xxxxx.xxx [-Lw/-Lu/-Lm] 第1引数でインプットファイルを指定します。 第2引数は -Lw:Windows(CRLF) -Lu:UNIX(LF) -Lm:Mac(CR) (省略すると-Lu) これにより xxxxx_BOM.xxx,xxxxx_NBOM.xxx,xxxxx_SJIS.xxx が作成されます。 ただし、RUBY.EXE に PATH が通っていなければエラーになります。
プロフィール
カレンダー
ブログ内検索
カテゴリー
最新記事
忍者カウンター
P R