菜鳥筆記(一) - Java常見的亂碼問題

本文將介紹一種Java Web/Api 開發常見的亂碼問題。html

前提摘要:在學習Java Web的過程當中,亂碼問題是常常遇到的,不管是頁面亂碼仍是數據庫亂碼。本文將羅列筆者在開發過程當中經常遇到幾種亂碼場景。java

####1、JSP頁面亂碼 由於網頁默認的編碼格式爲ISO-8859-1,該編碼格式不支持漢字,因此在網頁上顯示爲亂碼???.mysql

#####解決方案web

在文件頂部添加header上添加ajax

<pre> <%@ page contentType="text/html;charset=UTF-8" language="java" %> </pre>spring

####2、ajax請求時 request.getParams亂碼sql

在你的tomcat server.xml中配置數據庫

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000" URIEconding="UTF-8" useBodyEncodingForURI="true"
           redirectPort="8443" />

</pre>json

即添加URIEconding="UTF-8" useBodyEncodingForURI="true"segmentfault

####3、ajax請求時 response出去爲亂碼

在使用Spring MVC時 須在web.xml 配置

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

mvc註釋 RequestMapping 聲明 增長utf-8聲明如 @RequestMapping(method = RequestMethod.POST, produces = "application/json; charset=utf-8")

若是是普通的servlet時,則須代碼編碼以後輸出

response.setContentType("text/html;charset=UTF-8");

####3、文件亂碼

常常在拿到別人的工程文件時,因爲他不一樣的編碼例如GBK之類的編碼,須要在IDE中將文件編碼統一成UTF-8 便可.

window平臺下,能夠實用notepad++進行編轉化替換便可。

####4、終端亂碼

若是是 System.out.println 打印顯示亂碼 則 VM options 裏 添加 -Dfile.encoding=UTF-8 參數

####5、數據庫亂碼

  • jdbc連接utf-8聲明

jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8

  • 新建數據庫時,選擇utf-8/utf-8mb4編碼

####6、emoji亂碼支持

參考列表

下期預告(9月5號):Java郵件發送實踐 - 企業級營銷實踐必備。

歡迎你們關注個人微博,或者在文章下方 郵件訂閱。菜鳥筆記 下週不見不散

相關文章
相關標籤/搜索