• ベストアンサー

javaの文字コードについて

いつもお世話になっております。 webで入れられた文字列に全角が含まれるか判定したいのですが、 文字コードについて質問させてください。 javaは標準では、String型は標準ではunicodeだと思うのですが、 これはutf-8なのでしょうか。utf-16なのでしょうか。 試しに以下のように"A"の文字をbyteに変換してみたところ、 String strTest = "A"; byte[] bbb = strTest.getBytes(); for(int i = 0 ; i < bbb.length ; i++){ System.out.println(bbb[i]); } "65"という結果が返ってきました。 http://ash.jp/code/unitbl1.htm 等文字コード表を見ると、"A"は"41"と定義されており、なぜ"65"が返ってくるのでしょうか。 変な質問ですいません。 関係無いと思いますが、ソースはS-JIS、windwos環境で実行しています。 よろしくお願いします。

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

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

Stringクラスおよびchar型で使われる内部文字エンコーディングはUTF-16です。 しかし、StringクラスのgetBytes()を実行するとUTF-16からデフォルトのエンコーディングに変換されてしまう(getBytes()の引数でデフォルト以外のエンコーディングも指定可能)ので、質問者さんが書いたようなコードでは内部文字エンコーディングがUTF-16であるかどうかを確認することはできません。 UTF-16の値が欲しい場合にはgetBytes()ではなくてcharAt()などでchar型の値を取り出してください。

take_july
質問者

お礼

有難うございました。 解決できました。

その他の回答 (1)

  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.1

System.out.println(bbb[i]);は10進で表示されるから。 文字コード表は16進表記。

関連するQ&A