JavaでDB2から取得したレコードをファイル出力した場合に、
文字化けが発生。要はSJISからMS932に落とす時に、
以下の文字は注意が必要ということでメモ
| 文字 | SJIS | MS932 |
| ~ | u301C | uFF5E |
| ∥ | u2016 | u2225 |
| ― | u2212 | uFF0D |
| ¢ | u00A2 | uFFE0 |
| £ | u00A3 | uFFE1 |
| ¬ | u00AC | uFFE2 |
上記の文字のうち、「~」と「-」は日本語ではよく使うので
変換は必須。
でも、たったこの二つのために全文字列を走査して
変換するのはあまりにも割りにあわないと思う。
できればはなから入力させないようにするのが
得策かもしれません。
但し、SJISで出力するなら問題ないが、この場合は
機種依存文字の①とかが化けてしまう。悩ましい。
とはいってもすでに入力されてる場合は
どうしようもないので、変換する為のメソッドをば。
public static String sjis2ms932(String s) {
int len = s.length();
StringBuffer buf = new StringBuffer(len);
for (int i=0; i<len; i++) {
char c = s.charAt(i);
switch (c) {
case 'u301C': c = 'uFF5E'; break;
case 'u2016': c = 'u2225'; break;
case 'u2212': c = 'uFF0D'; break;
case 'u00A2': c = 'uFFE0'; break;
case 'u00A3': c = 'uFFE1'; break;
case 'u00AC': c = 'uFFE2'; break;
}
buf.append(c);
}
return buf.toString();
}
0 コメント:
コメントを投稿