Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Common Locale Data Repository (CLDR) trong Java 9

Java 9 nâng cao Internationalization: bật mặc định CLDR Locale Data (Unicode Common Locale Data Repository).

4 nguồn locale data

NguồnTừ khóaMô tả
CLDRCLDRUnicode CLDR project – chuẩn quốc tế, cập nhật thường xuyên.
HOSTHOSTTùy chỉnh OS của user hiện tại (date, time, number, currency format).
SPISPILocale-sensitive services từ installed SPI providers.
COMPAT (JRE)COMPATDữ liệu tương thích pre-Java 9. Deprecated, sẽ xóa tương lai.

Thứ tự ưu tiên mặc định

Java 8: JRE mặc định. Java 9: CLDR ưu tiên cao nhất.

Cấu hình thứ tự provider

# Tùy chỉnh thứ tự ưu tiên
java.locale.providers=CLDR,COMPAT,SPI,HOST

# Mặc định Java 9 (nếu không set)
java.locale.providers=CLDR,COMPAT,SPI

# Tương thích Java 8 (COMPAT trước CLDR)
java.locale.providers=COMPAT,CLDR

Cơ chế fallback

Nếu provider đầu tiên không cung cấp được locale data → tự động thử provider tiếp theo.

Tác động thực tế

  • Format date/time/number/currency có thể khác Java 8 do CLDR data mới.
  • Một số locale ít dùng có data tốt hơn nhờ CLDR.
  • Có thể break ứng dụng phụ thuộc format cụ thể của JRE cũ → dùng COMPAT,CLDR để migration dần.

Properties files encoding

Java 9: properties files load với UTF-8 encoding mặc định. Nếu gặp lỗi → fallback ISO-8859-1. Ép buộc encoding:

java.util.PropertyResourceBundle.encoding=ISO-8859-1
# hoặc
java.util.PropertyResourceBundle.encoding=UTF-8

CLDR làm Java 9+ tuân thủ chuẩn Unicode quốc tế, dữ liệu locale chính xác, cập nhật hơn.