hsmwhsmw

初心者入門文字コード - 文字列と数値 - Java入門

このページではJavaで文字の値をどのように扱っているかについてもう少し詳しく記述します。もし分からない部分があればこのページは飛ばして次へ進んで頂いても構いません。

Javaが使用する文字エンコーディング

Javaに限らずコンピュータにおいて文字を表現するためまず文字の集合を用意されました。これは使用する文字を全て集めたもので、例えばアルファベットしか必要無い場合もありますし日本語の文字も全て使いたい場合もあります。国によっても使う文字の集合は異なるわけです。次に文字の集合に含まれる各文字に対し数値を割り当てます。コンピュータの世界では何事も数値に置き換えて処理しなければなりません。この数値を文字コードと呼びます。

ある文字の集合に対してどのように文字コードを割り当てるのかを定めたものが文字エンコーディングと呼ばれるものです。例えば良く使われるShift_JISEUC-JPは日本語も含めた文字の集合に対して文字コードを割り当てたものですし、ASCIIはアルファベットと数値などの文字の集合に対して文字コードを割り当てたものです。

そしてJavaにおいては文字の集合としてUnicodeを使用しています。Unicodeとは簡単に言えば全世界で使用する文字を全て集めた巨大な文字の集合です。そしてUnicodeに対する文字エンコーディングとしてはUTF-16符号化形式(多分です)というものを使っています。

文字コードを使う

文字と文字コードは一対一ですので、文字の代わりに文字コードを使うことができます。例えば「a」や「あ」をJavaで使用している文字コードに直すと次のような値となります。

'a'  ==  97 (0x0061)
'あ' ==  12354 (0x3042)
'渓' ==  28179 (0x6E13)

※括弧の中は16進数表記です。

文字の'a'と文字コードである数値の97はJavaの内部では同じものとして扱います。よって次の3つは同じことを記述しています。

char c;

c = 'a';
c = 97;
c = 0x61;

※charというのは文字型の基本データ型です。ここではそれほど気にしないで下さい。

ただし次のように記述してしまうと違った意味になってしまいます。

System.out.println(97);

文字の'a'のことではなく数値の97だと解釈されてしまいます。このような場合には文字を次のような形式で記述して下さい。

'¥uxxxx'

「xxxx」の部分には16進数の文字コードを指定します。コードは必ず4桁で指定して下さい。例えば'a'であれば'¥u0097'となり、'あ'であれば'¥u3042'となります。

'¥u0061'
'¥u3042'

キーボードから入力できないような文字を使用する場合などに文字コードを使って記述すると便利です。

サンプル

では簡単なサンプルで試してみます。

JSample2_1.java

class JSample2_1{
  public static void main(String args[]){
    System.out.println('a');
    System.out.println('¥u0061');
    System.out.println('¥u3042');
  }
}

コンパイル後に実行すると次のように表示されます。

p2-1

文字コードを使った記述方法でも同じように文字を出力できました。