maven項目中程序運行編譯的時候出現:編碼GBK的不可映射字符

由於JDK是國際版的,我們在用javac.exe編譯時,編譯程序首先會獲得我們操作系統默認採用的編碼格式(也即在編譯java程序時,若我們不指定源程序文件的編碼格式,JDK首先獲得操作系統的file.encoding參數(它保存的就是操作系統默認的編碼格式,如WIN2k,它的值爲GBK),然後JDK就把我們的java源程序從file.encoding編碼格式轉化爲JAVA內部默認的UNICODE格式放入內存中。然後,javac.exe把轉換後的UNICODE格式的文件進行編譯成.class類文件,此時.class文件是UNICODE編碼的,它暫放在內存中,緊接着,JDK將此以UNICODE編碼的編譯後的class文件保存到我們的操作系統中形成我們見到的.class文件。對我們來說,我們最終獲得的.class文件是內容以UNICODE編碼格式保存的類文件,它內部包含我們源程序中的中文字符串,只不過此時己經由file.encoding格式轉化爲UNICODE格式了。
當我們不加設置就編譯時,相當於使用了參數:javac -encoding gbk *.java,當然就會出現不兼容的情況。

解決方法1:修改程序的編碼,項目名右鍵->properties->resources 修改程序的編碼

解決辦法2:在pom.xml文件中配置

    <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                <!--選擇jdk版本-->
                    <source>1.8</source>
                    <target>1.8</target>
                <!-- 指明編譯源代碼時使用的字符編碼, maven編譯的時候默認使用的GBK編碼, 通過encoding屬性設置字符編碼, 告訴maven這個項目使用UTF-8來編譯 -->
                <encoding>utf8</encoding>
                </configuration>
            </plugin>

這樣就可以正常的運行了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章