• 締切済み

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 お手数をおかけしますが、よろしくお願い致します

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

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)
回答No.1

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バイト)、となってたりしないでしょうか?

関連するQ&A