• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:内部文字コードとは?)

javaの内部文字コードとは?

このQ&Aのポイント
  • javaの内部文字コードとは、javaが文字をユニコードとして扱うことを指します。
  • 例えば、javaソースファイルをシフトJISで保存しようとすると、文字化けが発生しコンパイルエラーになります。
  • そのため、javaのソースファイルはユニコードとして保存してコンパイルする必要があります。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 かなりいい加減に言うと、Stringクラス、StringBufferクラスなどが保持する文字列がUNICODEだと言う意味だ。  残念ながら、この辺の話は「エンコーディング」と「文字セット(charset)」と「コードページ」と「グリフ」の意味を知らないと多分理解できんと思う。  ここでは、そーゆー難しい話は全部省いて、UNICODEとShiftJISとEUC-JPとlatin-1に限定し、かつかなり手順をはしょって説明する。  たとえばWindows上で、標準入力(System.in)から日本語を入力して標準出力(System.out)へ吐き出す事を考えよう。  「亜」という文字は、CP932では889F(HEX)、UNICODEではU+4E9Cと表現される。あなたがキーボードからIMEを使ってあを変換し「亜」にする時、メモリ上の値は889F(HEX)だ。それをJavaプログラムに渡して、System.inから取り込んだ時にJava VMのデフォルトエンコーディングで4E9C(HEX)に変換している(この辺から内部エンコード)。  ソースプログラム中にif("亜".equals(strInput))なんてあれば、それは「実行時には」4E9C(HEX)として扱われているのだな。  (このあたりから内部→外部エンコード)System.outで吐き出す時に4E9C(HEX)だとWindows上では「亜」を吐き出せないので889F(HEX)に変換している。  大雑把な説明だが、これが内部エンコーディングがUNICODEだと言われるものだ。

bobukun
質問者

お礼

現在の知識では分からない部分が多数ありましたので、「文字コード超研究」という本を読んでからもう一度anmochi様からご回答していただいた内容を見ると、良く分かりました。内部で文字を扱う時にはユニコードへ、外部へ出力する時にCP932(shift-jisを拡張)へと変換するのですね。とてもわかりやすく解説していただいてありがとうございました。