當在做程序的是你也許會遇到一些很讓你惱火的亂碼問題,就是在你在頁面傳參數或向數據庫里插入數據或去值的時候會出現亂碼的問題,其實有很多解決辦法比如:添加request.setCharacterEncoding("GB18030");或在取值的時候用String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"gbk");等 但有時仍然會遇到一些問題:
針對get方式(也就是鏈接的方式)除了使用String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"gbk");最好的方式就是在tomcat的配置文件server.xml相應端口的節點里面加上URIEncoding='utf-8'.
針對post方式建議使用fliter解決,注意:這種方式只對post方式有效果 get方式用上面的方法在tomcat里面配置
首先:定義一個類CharsetEncodingFilter讓它實現javax.servlet.Filter接口
然后在配置文件web.xml里添加: (請注意,過濾是在serlvet規范2.3版中初次引入的。因此,web.xml文件必須使用DTD的2.3版本。)
<filter>

<filter-name>CharsetEncodingFilter</filter-name>

<filter-class>com.util.filter.CharsetEncodingFilter</filter-class>//class必須是完整路徑

<init-param>

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

<param-value>GB18030</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CharsetEncodingFilter</filter-name>

<url-pattern>*.jsp</url-pattern>
</filter-mapping>//表示對所有jsp文件有效

icon 這是一個可選的元素,它聲明IDE能夠使用的一個圖象文件。
filter-name 這是一個必需的元素,它給過濾器分配一個選定的名字。
display-name 這是一個可選的元素,它給出IDE使用的短名稱。
description 這也是一個可選的元素,它給出IDE的信息,提供文本文檔。
filter-class 這是一個必需的元素,它指定過濾器實現類的完全限定名。
init-param 這是一個可選的元素,它定義可利用FilterConfig的getInitParameter方法讀
--------------------
另外其他知識:
pageEncoding是jsp文件本身的編碼
contentType的charset是指服務器發送給客戶端時的內容編碼,服務器返回的時候會在head里面指定(可以用firebug看一下):
Content-Type:text/html;charset=GBK (如果你的jsp里面設定的Content-Type為:charset=GBK )
pageEncoding 和contentType的預設都是 ISO8859-1. 而隨便設定了其中一個, 另一個就跟著一樣了
針對get方式(也就是鏈接的方式)除了使用String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"gbk");最好的方式就是在tomcat的配置文件server.xml相應端口的節點里面加上URIEncoding='utf-8'.
針對post方式建議使用fliter解決,注意:這種方式只對post方式有效果 get方式用上面的方法在tomcat里面配置
首先:定義一個類CharsetEncodingFilter讓它實現javax.servlet.Filter接口
然后在配置文件web.xml里添加: (請注意,過濾是在serlvet規范2.3版中初次引入的。因此,web.xml文件必須使用DTD的2.3版本。)
























icon 這是一個可選的元素,它聲明IDE能夠使用的一個圖象文件。
filter-name 這是一個必需的元素,它給過濾器分配一個選定的名字。
display-name 這是一個可選的元素,它給出IDE使用的短名稱。
description 這也是一個可選的元素,它給出IDE的信息,提供文本文檔。
filter-class 這是一個必需的元素,它指定過濾器實現類的完全限定名。
init-param 這是一個可選的元素,它定義可利用FilterConfig的getInitParameter方法讀
--------------------
另外其他知識:
pageEncoding是jsp文件本身的編碼
contentType的charset是指服務器發送給客戶端時的內容編碼,服務器返回的時候會在head里面指定(可以用firebug看一下):
Content-Type:text/html;charset=GBK (如果你的jsp里面設定的Content-Type為:charset=GBK )
pageEncoding 和contentType的預設都是 ISO8859-1. 而隨便設定了其中一個, 另一個就跟著一樣了