【Java入門】文字コードの確認・変換・指定する方法を解説!

こんにちは!エンジニアの中沢です。

Javaには文字列を正しく表示するために指定する「文字コード」があります。「文字コード」の指定を間違えると、文字化けの原因になるので注意してください。

この記事では、

  • 文字コードとは
  • デフォルトの文字コードを確認する方法
  • 文字列とbyte型の配列を変換する方法
  • 文字コードを判定する方法
  • 文字コードを指定してファイルを読み込む方法
  • 文字コードを指定してファイルに書き込む方法

などの使い方に関して解説していきます。

今回はこれらの方法を覚えるために、文字コードのさまざまな使い方をわかりやすく解説します!

文字コードとは

初めに文字コードについて解説します。

文字列はプログラムの内部ではbyte型の配列の数値で表現されています。このbyte型の配列を文字列に変換して表示するときの対応関係を文字コードと言います。

よく使われる文字コードにはShift_JIS、UTF-8、UTF-16などがあります。外部のファイルを読込む場合に、ファイルで使われている文字コードを正しく指定しないと文字化けしてしまうことがあるので注意が必要です。

文字化けした場合は次のように元の文字が分からない状態で表示されます。

Javaのデフォルトの文字コードはUnicode(UTF-16)です。

デフォルトの文字コードを確認する方法

使用している開発環境のデフォルトのエンコーディングを調べるには、SystemクラスのgetPropertyメソッドを使用します。

実行結果:

このプログラムを実行した環境では、「UTF-8」がデフォルトの文字コードであることが確認できました。

文字列とbyte型の配列を変換する方法

文字コードを指定してbyte型の配列で取得する方法

次に文字列から、文字コードを指定してbyte型の配列で取得する方法を解説します。文字列をbyte型の配列で取得するには、getBytesメソッドを使います。

getBytesメソッドの使い方を覚えるために、次のプログラムで確認してみましょう。

[実行結果]

文字コードを指定して、文字列からbyte型の配列に変換することができました!ここではgetBytesメソッドに例外処理が必要なため、try-catch文を使用しています。

byte型の配列をString型の文字列に変換する方法

次にbyte型の配列をString型の文字列に変換する方法を解説します。byte型の配列を文字列に変換するには次のような書き方をします。

byte型の配列を文字列に変換する方法を覚えるために、次のプログラムで確認してみましょう。

[実行結果]

byte型の配列を文字列に変換することができました!ここでは文字列をbyte型の配列に変換した後に、元の文字列に戻しています。

文字コードを判定する方法

ここでは、文字コードを判定する方法を解説します。

文字コードが正しい場合には、元の文字列と文字列に変換したbyte配列が等しくなるのでequalsメソッドで比較します。

次のプログラムで確認してみましょう。

[実行結果]

このプログラムでは文字列”abc”とbyte配列[97, 98, 99]を変換した文字列が等しくなる文字コードを調べています。

equalsメソッドの結果が”UTF-16″のときは”false”になるので、文字コードが間違っていることがわかります。
試しに”UTF-16″で文字列に変換すると文字化けをしてしまいます。

“UTF-8″のときは”true”になるので、文字コードが正しいことがわかります。変換した文字列も”abc”なので正しく変換されています!

文字コードを指定してファイルを読み書きする方法

文字コードを指定してファイルを読み込む方法

TXTファイルなどの文字コードを指定して読み込むためには、InputStreamReader及びFileInputStreamクラスを拡張したBufferedReaderクラスを使用します。

引数には文字コードを指定する必要があります。以下に文字コードを指定して、ファイルを読み込む方法を記述します。

文字コードを指定してファイルに書き込む方法

文字コードを指定してファイルに書き込むためには、BufferedWriter、OutputStreamWriter及びFileOutputStreamクラスを拡張した、PrintWriterクラスを使用します。

引数には文字コードを指定する必要があります。以下に文字コードを指定して、ファイルを書き込む方法を記述します。

ファイルに書き込むためには、PrintWriterクラスのprintlnメソッドを使用し、引数に文字列を指定します。

PrintWriterクラスは、指定したファイルが存在しない場合は新規作成し、すでに同名のファイルが存在する場合は内容が上書きされます。

文字コードを指定してファイルを読み書きする方法については、こちらの記事で詳しく解説しているので、ぜひ確認してください。

【Java】encodingを指定して読み書きする(CSV、テキストファイル)
更新日 : 2019年5月28日

String(文字列クラス)総まとめ

String(文字列クラス)についてさらに詳しく知りたいときはこちらの記事を確認してください!

まとめ

いかがでしたか?

今回は文字コードの変換と判定をする方法について解説しました。

文字コードを間違えると文字化けが発生するので注意してくださいね。もし文字コードのことを忘れてしまったらこの記事を確認してください!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

中沢 丈

中沢 丈

フリーランスエンジニア。
システム開発からコンテンツ作成まで幅広く対応します。

連絡先はこちらです。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説