亂碼

參數從jsp頁面傳送到controller層的時候經常會發生亂碼的問題,在頁面編碼爲UTF-8的前提下,解決方案有二:

一)

        controller接收數據時,將類型強制轉換

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

二)

        查看tomcat的配置文件編碼,tomcat的默認編碼是iso8859-1,而程序的默認編碼爲UTF-8,這裏出現了衝突,所以修改tomcat下的conf/server.xml文件。

找到如下代碼:


<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 


這段代碼規定了Tomcat監聽HTTP請求的端口號等信息。

修改爲如下情況:


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


第二種方法,是目前這個項目,應用服務器爲tomcat,用的是自己的。遇到問題的時候,首先想到的是第一種方法,確實也是這麼解決的。在本地是解決了,但是代碼提交之後,在服務器上測試,問題並沒有解決,到網上查了一下,才知道是tomcat的問題。

修改tomcat的配置文件時,先是修改的tomcat安裝路徑下的配置文件,重啓項目之後並沒有效果,再次查看tomcat的配置文件,修改過的代碼又還原回去了。

最後在下圖的位置修改的配置文件,啓動之後,就可以了。





除此之外還想說一個ssm框架插入mysql數據庫中文亂碼問題解決:

1.      檢查web.xml

    <!-- 編碼過濾器 --> 

    <filter> 

        <filter-name>encodingFilter</filter-name> 

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 

        <async-supported>true</async-supported> 

        <init-param> 

            <param-name>encoding</param-name> 

            <param-value>UTF-8</param-value> 

        </init-param> 

    </filter> 

    <filter-mapping> 

        <filter-name>encodingFilter</filter-name> 

        <url-pattern>/*</url-pattern> 

    </filter-mapping> 

 

2.      檢查建表腳本:

CREATE TABLE `t_user_info` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `user_name` varchar(40) NOT NULL COMMENT '用戶名',

  `password` varchar(255) NOT NULL COMMENT '密碼',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶信息表';

 

3.      檢查項目工程及jsp/java/xml文件

 

4.      檢查jdbc.properties

url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8


發佈了37 篇原創文章 · 獲贊 12 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章