仕事上必要な工夫など、備忘録として残します。
[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