• ベストアンサー

char型からのバイト数取得

文字列から1文字ずつバイト数を取得(判定)したいのですが、 char型の文字のバイト数を取得するスマートな方法はありますか? 今考えているのは以下のようなコードです。 String str ="あA" for(int i=0; i < str.length(); i++) { char ch = str.charAt(i); StringBuffer SB = new StringBuffer(); SB.append(c); if(SB.toString().getBytes.length == 1) { //1バイトの処理 } else { //2バイトの処理 } }

質問者が選んだベストアンサー

  • ベストアンサー
  • Ceren
  • ベストアンサー率49% (90/183)
回答No.1

もっと根本的に直す方法があるかもしれませんが、 とりあえずこんな感じで少しすっきりすると思います。 String str ="あA"; char[] ch = str.toCharArray(); for(int i=0; i < ch.length; i++) { int bytes = Character.toString(ch[i]).getBytes().length; 以下略

mokoron
質問者

お礼

回答ありがとうございました。 アドバイスいただいたようにしてみます!

その他の回答 (1)

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

char ch = str.charAt(i); に対して int l = Character.toString(ch).getBytes().length; でプラットフォームのデフォルト文字セットでの文字のバイト長lが得られます。 文字セットを指定したい場合は int l = Character.toString(ch).getBytes(charsetName).length; とすればよいでしょう。 ただし、文字列を1文字ごと処理するならcharを使わずsubstringで一文字文字列を抽出してしまう方が簡単かもしれません。 すなわち String ch = str.substring(i, i+1); int l = ch.getBytes().length; のようにです。

mokoron
質問者

お礼

回答ありがとうございました!

関連するQ&A