全角ハイフンを含む文字列の文字コードを UTF-8 に変換すると文字化けする

Unicode には似た記号が多い

おそらく原因は、Unicode に記号が多いため、全角ハイフンなのか全角のマイナス記号なのか区別がついていないからではないかと思われる。

解決方法

  1. 文字コードを変換する前に、文字化けする文字を安全な文字に置換してしまう。最終的な出力を行う時に文字コードを変換する。
  2. 文字コードを変換する前に、文字列をバイナリ化して文字化けする文字を安全な文字に変換してしまう。
    例: unpack と pack を利用するなど

最初の解決方法が一番簡単だと思われるが、正規表現でマッチさせる作業が入ると煩雑になる。