Java 作為首個原生支援國際化的程式語言,其字符處理基於 Unicode 標準。從 J2SE 5.0 起,Java 全面升級至 Unicode 4.0,並加強了對補充字符的支援,徹底解決了東南亞語系(如越南文)的顯示難題。本文示範如何通過標準 API 獲取當前 JVM 支援的所有語言環境及系統屬性信息。
import java.util.*;
import java.text.*;
public class LocaleInfoDemo {
public static void main(String[] args) {
// 1. 獲取所有可用的 Locale
Locale[] locales = DateFormat.getAvailableLocales();
System.out.println("====== JVM 支援的語言環境 ====== ");
for (Locale locale : locales) {
System.out.printf("%-10s %s%n", locale.toString(), locale.getDisplayName());
}
// 2. 獲取並列印所有系統屬性
System.out.println("\n====== 系統屬性 ====== ");
System.getProperties().list(System.out);
}
}
輸出包含語言代碼、國家/地區變體及中文顯示名,例如:
zh_CN - 中文 (中國)zh_TW - 中文 (台灣地區)en_US - 英文 (美國)ja_JP - 日文 (日本)vi_VN - 越南文 (越南)完整列表超過 100 條,涵蓋全球主流語言與地區變體。
| 屬性鍵 | 示例值 | 用途 |
|---|---|---|
| java.version | 1.5.0 / 17.0.2 | JRE 版本號 |
| java.vendor | Sun / Oracle / Eclipse Adoptium | JRE 廠商 |
| os.name | Windows 10 / Linux / Mac OS X | 作業系統名稱 |
| os.arch | x86 / x64 / aarch64 | CPU 架構 |
| file.encoding | UTF-8 / GB18030 | 默認文件編碼 |
| user.language | zh / en | 用戶語言 |
| user.country | CN / US | 用戶國家 |
| java.class.path | .:/app/lib/* | 類路徑 |
file.encoding、sun.jnu.encoding 定位亂碼根因os.name、os.arch 針對性優化原生庫加載Locale.getAvailableLocales() 可獲取更基礎的 Locale 列表(不依賴 DateFormat)System.getProperty(key) 單獨查詢,避免遍歷全量輸出user.home、java.io.tmpdir)脫敏後再記錄日誌掌握 JVM 國際化支援情況與系統屬性獲取,是 Java 開發者進行跨平台部署、國際化適配、編碼故障排查的基本功。上述代碼可直接整合至專案的健康檢查端點或啟動日誌中,實現環境自檢自動化。