5月 072012
Twitterをterminalで見ていると、ごく稀に変な文字が入っているtweetがあって、それがUTF-8-MACだとgeta6に教わった。
Macだと「ぱぴぷぺぽ」など一部の日本語をファイル名にすると変な事が起こるのだが、それの原因がUTF-8-MACらしい。
そういう文字をDBに保存するとのちのち良くないので、Rubyで変換した。
Iconv使ったら簡単だった。
■例
touch ぱぴぷぺぽとなる。
echo は<309a>ひ<309a>ふ<309a>へ<309a>ほ<309a>
ただし、TerminalやiTerm2で「ぱぴぷぺぽ」をechoやlsしてもふつうに「ぱぴぷぺぽ」になってしまって、Rubyに渡して変換を試せない。
GNU Screen上でechoやlsするとUTF-8-MACの文字を出力できる。
■Rubyで変換
インストール
brew install iconv
gem install iconv
標準入力を全て普通のUTF-8に変換する
convert-macutf.rb
require 'rubygems'
require 'iconv'
ARGF.each do |line|
puts line
puts Iconv.iconv("UTF-8", "UTF-8-MAC", line)
end
screen起動してから
touch ぱぴぷぺぽ結果
ls | ruby -Ku convert-macutf.rb
convert-macutf.rb
convert-macutf.rb
ぱÿぴÿぷÿぺÿぽÿ
ぱぴぷぺぽ
iconv単体で使う時はこう
ls | iconv -f UTF-8-MAC -t UTF-8