1. 程式人生 > >springmvc後臺取值中文亂碼問題

springmvc後臺取值中文亂碼問題

-c unicode -name work use -1 接收 pattern 過濾器

字符-->字節、字節-->字符時需要用到編碼(Encoder)、解碼(Decoder)

幾種編碼:

ASCII:總共128

ISO-8859-1:涵蓋大部分西歐語言字符。一個字符一個字節表示

gbk2312:包含6000多的漢字,一個英文字符一個字節表示,一個漢子兩個字節表示。

gbk:包含20000多個漢字,包含gbk2312所有編碼。

utf-16:每個字符用兩個字節表示。jvm的編碼方式。效率最高

utf-8:英文用一個字節表示,漢字用三個字節表示。適合網絡之間傳輸的編碼方式。

Servlet:

1.接收get方式,得到的是與頁面編碼方式一樣的,但解碼需要在服務器配置文件中修改。可以用一種不正常的方式解決,如String的構造函數,

new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8")

2.接收post方式需要在web.xml中配置一下過濾器

 <!-- post亂碼過慮器 -->
    <filter>
        <filter-name>CharacterEncodingFilter</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> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <
url-pattern>/*</url-pattern> </filter-mapping>

MySQL:

要與數據庫的編碼一致:url="jdbc:mysql://localhost:3306/DB?useUnicode=truecharacterEncoding=gbk"

JS/html:

默認編碼是utf-8

常見問題:

1.中文變成看不懂的字符:gbk-->iso-8859-1

2.一個漢子變成一個問號:iso-8859-1-->iso-8859-1

3.一個漢子變成兩個問號:gbk-->iso-8859-1-->gbk-->gbk

springmvc後臺取值中文亂碼問題