簡體   English   中英

使用Eclipse和Maven進行Java編碼

[英]Java encoding with Eclipse and Maven

我經常看到編碼出現問題。 因此,我寫下了該指令集以執行所有必需的操作,以使一切正常工作(使用編碼)。 該設置與Eclipse有關,但也將指導maven設置。

在Java文件中使用斯堪的納維亞字母時,編碼問題最成問題(åäö,它們在運行時具有實際含義)。

一個示例情況是在java文件中有一個常量變量,該常量包含一個scandic字母,用於從傳入流中標識一個值(此格式位於UTF-8中)。

而且底層操作系統可能是Windows,並且默認情況下使用cp1252。

例如以下代碼:

@Test
public void scandicTest() {
    System.out.println("scandics: åäö");
}

正確配置所有內容后(例如,在eclipse中),運行此測試將產生:

scandics: åäö

但是,如果通過Maven運行此命令(從命令行或在eclipse => mvn test中),則將具有:

scandics: ���

首先,需要在Eclipse中以及在maven pom.xml中更改編碼,以正確讀取和存儲文件,並在保存文件/運行測試時讓Eclipse使用正確的編碼。 但是,當Maven和生成的Java代碼處理傳入的流(編譯並運行測試)時,即使讀入的文件正確(包含scandic字母),java文件本身中的常量值也仍然損壞。

即使正確設置了其他所有內容,System Java仍使用特定於操作系統的默認編碼。 因此,您無法在項目中進行全部配置,因此還必須對OS-JVM進行配置。

我將解釋為此所需的所有編碼步驟,即使該“公共”部分已經有多個答案(至少對於步驟2)。 我的特殊情況是解決步驟3。

  1. 配置蝕:

    • 打開:窗口>首選項
    • 在搜索字段中輸入“ encoding”
    • 會有很多條目,但是首先選擇“常規>工作區”
    • 找到“文本文件編碼”,然后選擇:其他> UTF-8
    • 您還希望/需要也為所有 “常規>內容類型”設置編碼
    • 從右側面板中選擇“文本”項(將打開文件類型列表),然后瀏覽所有類型 將其“默認編碼”設置為“ UTF-8”
    • 單擊“更新”按鈕以保留更改。
    • 您可能還需要對搜索中找到的所有其他條目和項目執行此操作。
    • 例如,“ Web> CSS文件>編碼” | ISO 10646 / Unicode(UTF-8)
    • 全部設置完后,Eclipse應該使用編碼正確運行。
  2. 在maven.pom.xml中設置編碼

     <project> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> ... </project> 
    • 您可能還需要為所有插件設置編碼。

       <plugin> ... <configuration> <encoding>UTF-8</encoding> ... </configuration> </plugin> 

      要么

       <plugin> <executions> <execution> <configuration> <encoding>UTF-8</encoding> ... </configuration> ... </execution> </executions> </plugin> 

      雖然我不確定后者是否是強制性的,或者實際上是否將采用默認值。

  3. 配置操作系統

    • 您需要將環境變量JAVA_TOOL_OPTIONS設置為-Dfile.encoding=UTF8

如評論中所建議,這里是有關轉換文件的更多信息:
您應該注意,所有文件都必須具有UTF-8編碼才能起作用。 如果使用給定的配置通過eclipse編輯所有內容,則它們將為UTF-8。
如果收到應使用代碼處理的文件,則可能需要進行轉換。 您只需在eclipse中打開它並再次保存文件即可(您可能需要添加和刪除字符才能啟用保存功能)。
如果可以使用NotePad ++,則有一個“編碼”菜單用於轉換文件。 轉換文件時,scandic有時可能會損壞,因此轉換后需要手動檢查它們。

還有一件事。 保存在其他工具中的文件可能具有BOM。 (字節順序標記)。 該“字符”是不可見的,例如,某些解析器無法讀取包含該字符的XML文件。 您可以通過以下方式刪除BOM表標記:在eclipse中打開文件,然后將光標設置在文件中第一個字符之前,然后在“退格鍵”中選擇一次。 沒有任何變化,但實際上已刪除了角色,然后文件開始工作。

NotePad可能會插入BOM標記,因此請勿將其用於編輯XML文件!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM