Sunflat のブログ

ソフトウェア開発についての話題が多いかも

Unicodeの文字化け?

Web上のHTMLを解析するソフトをJava上でいくつか実装してみたところ,どうもUTF-8で書かれたページの内容を,Shift-JIS(MS932)で出力すると,一部の文字が文字化けするっぽい.
元々Shift-JISに無い文字ならしょうがないけど,「〜」とか「−」とか,よく使う文字まで文字化けしてしまう.

[このへんの記事]を読んでみたところ,どうも文字コード変換表の違いが原因らしい?
とりあえず,UTF-8で読んだ文字列に↓のような変換をかけて使ってみたけど,こんなんでいいのかなぁ(^−^;)

  public static String forSjisOutput(String s) {
    return s.replace('\u301c','〜').replace('\u2016','‖')
      .replace('\u2212','−').replace('\u00A2','¢')
      .replace('\u00A3','£').replace('\u00AC','¬');
  }