RubyでUTF-8からSJISへ変換する場合の注意
UTF-8をSJISへ変換する時は下記に注意する
波ダッシュ/全角チルダ問題
UNICODEで似た見た目だけど別の文字として存在している文字がSJISではどれにあたるのかを変換しないといけない
RubyではEncoding::Shift_JISではなくEncodeing::SJIS(CP932)を指定してencodeする
UNICODEの結合文字の扱い
UNICODEでは文字+濁点が別々で存在し、それらを組み合わせて(6バイト)で1文字を表す結合文字というのがある。
SJISではそれを別々の文字として扱うので対応が必要。
str.unicode_normalize(:nfc)とやればOK。