- 締切済み
Java 波ダッシュ3バイトを2バイト認識したい
入力文字列のバイト数チェックをするプログラムを修正していて、 以下の処理で波ダッシュが3バイトとして、認識されて困っています。 System.out.println("~".getBytes("MS932").length); >3バイト DBのテーブル格納時には、波ダッシュは2バイト扱いで登録する想定なので、 入力チェックで、3バイトでなく2バイトで波ダッシュのバイト数を認識したい次第です。 他の特殊文字は、きちんと2バイトで認識されています。 以下の正常に2バイトに認識されている文字は、影響をあたえずに、波ダッシュを2バイト と認識させる対応をお手数ですが、ご教授ください。 例. "ア" "試" "ー"(全角ハイフン) "まるの1" ※掲示板にかけないため、左記の表現(本当は2バイトの1文字) "ミリ" ※掲示板にかけないため、左記の表現(本当は2バイトの1文字) ※実行環境 ApacheのStruts環境 UnixとWindowsの両方の環境で実行。 デバックはWindows、テスト実施、本番稼働はUnix お手数をおかけしますが、よろしくお願い致します
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- wormhole
- ベストアンサー率28% (1626/5665)
Windows7 + Java6 の環境では "\uff5e".getBytes("MS932").length は2になりましたけど。 それにMS932に3バイトのコードはなかったような・・・ 何にしてもいろいろ問題がありそうですが http://ja.wikipedia.org/wiki/%E6%B3%A2%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5 http://www.informe.co.jp/useful/character/character14.html
- kmee
- ベストアンサー率55% (1857/3366)
http://ja.wikipedia.org/wiki/%E6%B3%A2%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5#Unicode.E3.81.AB.E9.96.A2.E9.80.A3.E3.81.99.E3.82.8B.E5.95.8F.E9.A1.8C これの関係で、MS932に対応文字がない→UTF-8のまま(3バイト)、となってたりしないでしょうか?