RubyでUTF-8からSJISへ変換する場合の注意
UTF-8からSJISに変換する時にはShift-JIS系エンコードの種類だけじゃなくてUNICODE正規化も気にしないとダメという話 – 株式会社ルーター
UTF-8をSJISへ変換する時は下記に注意する
波ダッシュ/全角チルダ問題
UNICODEで似た見た目だけど別の文字として存在している文字がSJISではどれにあたるのかを変換しないといけない
RubyではEncoding::Shift_JISではなくEncodeing::SJIS(CP932)を指定してencodeする
いまさら聞けない!波ダッシュと全角チルダ問題についてまとめてみた - Secret Garden(Instrumental)
UNICODEの結合文字の扱い
UNICODEでは文字+濁点が別々で存在し、それらを組み合わせて(6バイト)で1文字を表す結合文字というのがある。
SJISではそれを別々の文字として扱うので対応が必要。
str.unicode_normalize(:nfc)とやればOK。
文字の色々 文字コード ruby