Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9の国際化(i18n)機能強化のポイントを徹底解説

Java 9における国際化機能強化の概要

Java 9の国際化(Internationalization)機能強化には、Unicode 8.0への対応、プロパティファイルのUTF-8読み込み、そしてCLDRロケールデータのデフォルト有効化が含まれます。Java 9はUnicode 8.0規格に対応しており、10,555文字、29のスクリプト(用字系)、42のブロックをサポートしています。

プロパティファイルのUTF-8エンコーディング対応

Java 9では、プロパティファイルがUTF-8エンコーディングで読み込まれるようになりました。デフォルトでは、入力ストリームの読み込み時に不正なバイト列が検出されると、MalformedInputExceptionまたはUnmappableCharacterExceptionがスローされます。

この場合、PropertyResourceBundleインスタンスは例外発生前の状態にリセットされ、入力ストリームをISO-8859-1で再読み込みして処理を継続します。

java.util.PropertyResourceBundle.encodingシステムプロパティの動作

java.util.PropertyResourceBundle.encodingシステムプロパティにISO-8859-1またはUTF-8が明示的に設定されている場合、PropertyResourceBundleインスタンスはそのエンコーディングで入力ストリームを読み込み、無効なシーケンスを検出した時点で例外をスローします。

このシステムプロパティは、PropertyResourceBundleクラスの初期化時に読み取られ評価されるため、その後にプロパティを変更・削除しても効果はありません。

ISO-8859-1を指定した場合の注意点

  • ISO-8859-1エンコーディングで表現できない文字は、Unicodeエスケープ(\uXXXX形式)で記述する必要があります。
  • それ以外のエンコーディング値がシステムプロパティに設定された場合は、無視されます。

問題が発生した場合の対処方法

エンコーディングに関する問題が発生した場合は、以下の選択肢を検討してください。

  • プロパティファイルをUTF-8エンコーディングに変換する。
  • 実行時にシステムプロパティを明示的に指定する。
java.util.PropertyResourceBundle.encoding=ISO-8859-1
  1. Java 9のJShellで使える「/edit」コマンドの種類と使い方

    JShellは、Java 9で導入されたコマンドラインツールです。main()メソッドを用意しなくても、宣言・ステートメント・式をその場で評価できるのが大きな特徴です。さらに、JShellにはJShell Edit Padという簡易テキストエディタが組み込まれており、「/edit」コマンドで起動することで、入力済みのコードを手軽に編集できます。 /editコマンドの3つの形式 JShellで利用できる「/edit」コマンドには、次の3つの形式があります。 /edit /edit [ID] /edit [コード名] /edit:引数なしで実行すると、現在アクティブなすべてのコードがテキストエデ

  2. Javaのクラスの種類一覧!具象・抽象・final・POJO・静的・内部クラスを徹底解説

    Javaには、用途や宣言方法に応じてさまざまな種類のクラスが存在します。それぞれのクラスには固有の役割があり、適切に使い分けることで、保守性の高いコードを書くことができます。この記事では、Javaの代表的な6つのクラスの種類について、コード例とともにわかりやすく解説します。 1. 具象クラス(Concrete Class) 具象クラスとは、抽象メソッドを持たない通常のクラス、または親クラスやインターフェースのすべてのメソッドを実装しているクラスのことです。直接インスタンス化できる、最も一般的なクラスです。 コード例 public class Concrete { // 具象クラス