iconvをうまく動かす

昨晩のカロ氏のアドバイス

21:10 [karo] xyzzysjisにしたファイルをiconvでutf-8にしてみた
21:10 [karo] さすがに自分で作ったファイルはiconvも文句を言わずに読み込むな
21:11 [karo] で、なんかiconvの癖が見えてきた気がする
21:12 [karo] もとのファイル:高橋 功〓
21:12 [karo] iconv作成ファイル:高橋 功〓
21:13 [karo] あれ?ここに張り付けると同じになるな
21:13 [karo] とにかく、〓の文字が違うな
21:30 [karo] 結論:0xefbc8dを0xe28892に置換してからならiconvが使える。

ということで、rubyでは

 #!/usr/bin/ruby -Ku
 require 'iconv'
 print Iconv.iconv("sjis","utf8",STDIN.read.gsub(/\xEF\xBC\x8D/,"\xE2\x88\x92"))

もしくは

 cat aaa_utf8_file.txt | ruby -e 'require "iconv";print Iconv.iconv("sjis","utf8",STDIN.read.gsub(/\xEF\xBC\x8D/,"\xE2\x88\x92"))' > aaa_sjis_file.txt

で良いことになる。

実験してみるとうまくいった。

http://www.miraclelinux.com/technet/samba30/iconv_issues.html

ここもちょっと気になる。