日本語PDFの発行機能などを開発する時に、元々UTF-8になっていた文書をSHIFT-JISに変換する必要が発生することがあります。その時、変換時に発生する不正な日本語文字マッピングを、変換かける前に以下のようにプログラム的に書き換えると、無事に変換ができます。

文字コード

波ダッシュ(~)UTF-8: 0xEFBD9E → SHIFT-JIS: 0xE3809C
全角チルダ(―)UTF-8: 0xEFBC8D → SHIFT-JIS: 0xE28892

ちなみに、これをRubyで書く場合は以下のようなソースになります:

text = text.gsub(/\xEF\xBD\x9E/,”\xE3\x80\x9C”)
text = text.gsub(/\xEF\xBC\x8D/,”\xE2\x88\x92″)