我對編碼還很陌生,目前我正在嘗試在 Eclipse 中使用 gradle 構建我的第一個胖 JAR。我的專案生成一個 HTML 檔案,其中包含我從 JSON 檔案中獲取的資料。那里的一些字串使用 UTF-8 符號/表情符號。我設法用“Jackson”和對字串使用 getBytes() 方法將它們放入我的 java 物件中。當我在 Eclipse 中從這些物件生成 HTML 時,它們會以正確的方式顯示(在 Eclipse 之外的瀏覽器中打開時)。當我使用“gradlew jar”構建胖 jar 時,就會出現問題(我必須在 build.gradle 中對 jar 進行一些更改以使其包含依賴項)。一切正常,除了 UTF-8 符號沒有顯示,而是我得到一個“?”,就像編碼設定不正確一樣。所以我認為問題在于gradle中的編碼設定。
到目前為止,我嘗試將其添加到 gradlew.bat:
set GRADLE_OPTS=-Dfile.encoding=utf-8
這要 build.gradle :
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
這就是 gradle.Properties
systemProp.file.encoding=utf-8
就像這個執行緒中提到的在 Gradle 中正確顯示 UTF-8 文本
這些似乎都沒有幫助。有任何想法嗎?我卡住了,很難找到解決方案。
uj5u.com熱心網友回復:
-Dfile.encoding=UTF-8設定運行編譯代碼時在運行時使用的默認編碼,例如. 不要將它與 Java 編譯器用于讀取檔案的編碼混淆:.java -Dfile.encoding=UTF-8 -jar ....javajavac -encoding ...
為避免在命令列上設定它,您也可以通過System.setProperty("file.encoding", "UTF-8");. 但最好在它使用的地方設定編碼,例如,而不是BufferedWriter writer= Files.newBufferedWriter(path); use BufferedWriter writer= Files.newBufferedWriter(path, StandardCharsets.UTF_8);.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/425837.html
