Charsetを使って文字列のエンコードされたバイト列を取得する方法

「"0123".getBytes("UTF-8")」といった処理を記述すると、UnsupportedEncodingExceptionをcatchする必要があります。Charsetというクラス(JDK1.4から導入)を使ったString#getBytes(Charset charset)(String (Java Platform SE 6))がJDK6から導入されており、これを使って文字列についてエンコードされたバイト列を取得することもできます。こちらを使うとUnsupportedEncodingExceptionではなく、UnsupportedCharsetExceptionといったRuntime Exceptionの例外を投げるようになるため、コード記述時にcatchする必要がなくなります。その結果、コードが見やすくなります。

package org.sssg.soft.sample.charset;
import java.nio.charset.Charset;
public class App {
  public void exec() {
    Charset cs = Charset.forName("UTF-8");
    System.out.println(cs.name());
    byte[] bs = "0123".getBytes(cs);
    for (int b : bs) {
      System.out.print(b + " ");
    }
    System.out.println("");
  }
  public static void main(String[] args) {
    new App().exec();
  }
}

実行結果は次の通り。

UTF-8
48 49 50 51

Charsetを使って文字列のエンコードされたバイト列を取得する方法」への4件のフィードバック

  1. こちらこそ、たびたびありがとうございます。JDK6からgetBytes(Charset cs)メソッドがサポートされたことを確認してから記事にしたことを、いま思い出しました。それで、Charsetは1.4と指摘されて調べたときに、getBytes(Charset cs)がJDK6からだということを忘れてて、Charsetが導入されたバージョンだけ確認して、納得して直してしまいました… 気をつけます。

  2. 訂正していただいたのに、申し訳ない
    public byte[] getBytes(Charset charset)
    が導入されてのはJDK6からでした。
    Charset charsetはJDK1.4から導入されており、勘違いしておりました。

  3. 早速、取り上げていただいてありがとうございます。
    java.nio.charset.Charset
    はJDK1.4からnioが導入されたことによって追加されたクラスになります。
    まだ、知らない方も結構いますね。

コメントは停止中です。

同じタグの記事: Java
同じタグの記事: JDK6
同じカテゴリの記事: Java
関連書籍: Java