プライマリ・コンテンツに移動
Java Platform, Standard Edition国際化ガイド
リリース9
E90928-01
目次へ移動
目次

前
次

1 JDK 9における国際化の拡張機能

Oracle Java Development Kit 9の国際化の拡張機能には、次のものがあります。

Unicode 8.0

Unicode 8.0のためのサポートが追加されています。Java Platform, Standard Edition (Java SE) 8ではUnicode 6.2をサポートしていました。

Unicode 6.37.0および8.0標準では、10,555文字、29スクリプトおよび42ブロックを導入し、これらのすべてがJava SE 9でサポートされています。

デフォルトで有効になっているCLDRロケール・データ

最初にJDK 8に追加されたUnicode Common Locale Data Repository (CLDR)のXMLベースのロケール・データが、JDK 9でのデフォルトのロケール・データです。以前のリリースでは、デフォルトはJREでした。

ロケール・データには、次のキーワードで識別される異なる4つのソースがあります。

  • CLDRは、Unicode CLDRプロジェクトから提供されるロケール・データを表します。

  • HOSTは、基盤となるオペレーティング・システムの設定に対する現在のユーザーによるカスタマイズを表します。これはそのユーザーのデフォルト・ロケールでのみ機能します。カスタマイズ可能な設定はオペレーティング・システムによって異なる場合があります。ただし、主に日付、時間、数値および通貨の書式がサポートされます。

  • SPIは、インストール済サービス・プロバイダ・インタフェース(SPI)・プロバイダによって実装された、ロケールに依存するサービスを表します。

  • COMPAT(旧称JRE)は、JDK 9より前のリリースと互換性のあるロケール・データを表します。JREを値として使用できますが、COMPATの方がより適切です。

ロケール・データ・ソースを選択するには、java.locale.providersシステム・プロパティを使用して、データ・ソースを優先順に並べます。プロバイダがリクエストされたロケール・データを提供できない場合、検索は順に次のプロバイダに進みます。次に例を示します。

java.locale.providers=HOST,SPI,CLDR,COMPAT

このプロパティを設定しない場合、デフォルトの動作は次の設定と同等です。

java.locale.providers=CLDR,COMPAT,SPI

JDK 8と互換性のある動作を有効にするには、java.locale.providersシステム・プロパティをCLDRの左にCOMPATの値に設定します。

サポートされているロケールについては、JDK 9およびJRE 9でサポートされるロケールに関するページを参照してください。関連するAPIについてはjava.util.spi.LocaleServiceProvider API仕様に関する項を参照してください。

UTF-8プロパティ・ファイル

Java SE 9では、プロパティ・ファイルはUTF-8エンコーディングでロードされます。以前のリリースでは、ISO-8859-1エンコーディングがプロパティ・リソース・バンドルのロードに使用されました。UTF-8は、非Latin文字の表現により適した方法です。

ほとんどの既存のプロパティ・ファイルは影響を受けません。UTF-8およびISO-8859-1はASCII文字に対してエンコーディングが同じであり、人間が判読可能な非ASCII ISO-8859-1エンコーディングは有効なUTF-8ではありません。無効なUTF-8バイト・シーケンスが検出された場合、Javaランタイムではファイルを自動的にISO-8859-1で再読込みします。

問題がある場合、次のオプションを検討してください。
  • プロパティ・ファイルをUTF-8エンコーディングに変換する。

  • プロパティ・ファイルのエンコーディングに対して、ランタイム・システム・プロパティを次の例のように指定する。
    java.util.PropertyResourceBundle.encoding=ISO-8859-1

java.util.PropertyResourceBundleに関する項を参照してください。