native2ascii是JDK自帶的編碼轉換工具,專門處理Java屬性文件、源碼中的Unicode轉義序列(\uXXXX)與原生編碼互轉,解決跨平台中文顯示問題。
native2ascii [options] [inputfile [outputfile]]
-options:
-reverse 反向轉換:Unicode轉義 -> 原生編碼
-encoding 指定編碼(默認file.encoding系統屬性)
-J 傳遞JVM參數(如-J-Xms64m)
反編譯工具(如JD-GUI、Fernflower)輸出常含Unicode轉義:
// 反編譯輸出
System.out.println("\u521D\u59CB\u5316\u6570\u636E\u5E93\u5931\u8D25");
// 執行轉換
native2ascii -reverse -encoding GBK Decompiled.java Readable.java
// 結果
System.out.println("初始化数据库失败");
C:\> native2ascii -encoding UTF-8
// 等待輸入,輸入:中文測試
// 輸出:\u4e2d\u6587\u6d4b\u8bd5
// Ctrl+Z (Windows) / Ctrl+D (Linux) 結束
# Maven插件配置
org.codehaus.mojo
native2ascii-maven-plugin
1.0-beta-1
native2ascii
| 場景 | 推薦編碼 | 說明 |
|---|---|---|
| 屬性文件 | ISO-8859-1 | Java規範默認,含非Latin1字符需轉義 |
| 中文Windows | GBK/GB2312 | 系統默認編碼 |
| Linux/Mac/現代項目 | UTF-8 | 跨平台通用,無轉義需求 |
<encoding>UTF-8</encoding>自動處理資源文件tasks.withType(JavaCompile) { options.encoding = 'UTF-8' }雖然現代構建工具已內建編碼處理,但native2ascii在舊系統維護、反編碼分析、跨編碼環境遷移中仍是不可替換的輕量級工具。