要怎麼解決呢?
這個問題剛碰到真的好棘手!!
參考
http://roymercadian.blogspot.tw/2012/12/tomcatutf-8.html
就是把Tomcat 的 filter 改一下 就可以
在 server.xml 下修改
<Connector connectionTimeout= "20000" port ="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding= "BIG5"/>
他預設是 ISO-8859-1 這邊主要設定傳入參數 encoding 讀取啦
設定完後, http://localhost:8080/myServlet/Lib01?name=中文
理論上 System.out.println(); 會出現 正確的編碼!!
這只是讀取!!!!
要顯示 正確的中文 就要 在serverlet 加入
response.setContentType( "text/html; charset=BIG5");// 注意順序
PrintWriter out = response.getWriter(); // 注意順序
out.println( "<h1> user information 文</h1><br>" );
out.println( "<h1> "+name +"</h1><br>" );
System. out.println("name=" +name );
就可以正確顯示中文啦!!!
別開心得太早!! 這只是 GET 的方法!! 還有 POST !!
-------------------------------------------------------
POST
2. POST請求部份
Tomcat提供了一個名為SetCharacterEncodingFilter.class的filter,可以將POST請求改為UTF-8編碼
Tomcat提供了一個名為SetCharacterEncodingFilter.class的filter,可以將POST請求改為UTF-8編碼
Tomcat 7.x以及5.5.36、6.0.36之後的版本:
在Tomcat 7.x以及5.5.36、6.0.36之後的版本中,已經將SetCharacterEncodingFilter加入Tomcat核心中,因此不需要再自行複製class到自己的webapp資料夾中,在設定filter時直接指定class (WEB-INF /web.xml)即可。
<filter>
<filter-name>Set Character Encoding</filter-name>
<!--差異處-->
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class><init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<!--將全部的請求都mapping給filter-->
<url-pattern>/*</url-pattern>
</filter-mapping>
在Tomcat 7.x以及5.5.36、6.0.36之後的版本中,已經將SetCharacterEncodingFilter加入Tomcat核心中,因此不需要再自行複製class到自己的webapp資料夾中,在設定filter時直接指定class (WEB-INF /web.xml)即可。
<filter>
<filter-name>Set Character Encoding</filter-name>
<!--差異處-->
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class><init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<!--將全部的請求都mapping給filter-->
<url-pattern>/*</url-pattern>
</filter-mapping>
---------------------------------------------------------------------------------------
當我所有的設定都設成UTF-8的時候
偏偏console怎麼搞都是亂碼
後來才發現當java檔編碼設為BIG5時就正常了…
這不是我要的!
再後來發現這篇
Eclipse 執行時如何讓Console顯示中文
Eclipse主功能表-->Run-->Run Configuration-->Common 頁籤-->
Console Encoding-->Others-->big5 (沒有就手動輸入)-->Apply
最後是印出正常的中文,但是這代表JDK應該是自己把它變成BIG5
所以導至設定成UTF-8的Console會印出亂碼!
建置全UTF-8的環境:
1.在eclipse.ini的-vmargs下面加上「-Dfile.encoding=UTF-8」。
2.eclipse-->Window-->Preferences-->General-->Workspace-->Text file encoding-->UTF-8
3.Installed JREs-->Default VM Arguments:-->-Dfile.encoding=UTF-8
4.eclipse-->Run-->Run Configurations-->Arguments-->VM arguments-->-Dfile.encoding=UTF-8
5.eclipse-->Run-->Run Configuration-->Common 頁籤--> Console Encoding-->Others-->UTF-8
==>亂碼!
5.eclipse-->Run-->Run Configuration-->Common 頁籤--> Console Encoding-->Others-->big5
==>ok!
目前發現是 JDK的問題:
a.若是用JDK1.4那console得設定成big5才行!
b.若是用JDK6,那用UTF-8就沒問題!
偏偏console怎麼搞都是亂碼
後來才發現當java檔編碼設為BIG5時就正常了…
這不是我要的!
再後來發現這篇
Eclipse 執行時如何讓Console顯示中文
Eclipse主功能表-->Run-->Run Configuration-->Common 頁籤-->
Console Encoding-->Others-->big5 (沒有就手動輸入)-->Apply
最後是印出正常的中文,但是這代表JDK應該是自己把它變成BIG5
所以導至設定成UTF-8的Console會印出亂碼!
建置全UTF-8的環境:
1.在eclipse.ini的-vmargs下面加上「-Dfile.encoding=UTF-8」。
2.eclipse-->Window-->Preferences-->General-->Workspace-->Text file encoding-->UTF-8
3.Installed JREs-->Default VM Arguments:-->-Dfile.encoding=UTF-8
4.eclipse-->Run-->Run Configurations-->Arguments-->VM arguments-->-Dfile.encoding=UTF-8
5.eclipse-->Run-->Run Configuration-->Common 頁籤--> Console Encoding-->Others-->UTF-8
==>亂碼!
5.eclipse-->Run-->Run Configuration-->Common 頁籤--> Console Encoding-->Others-->big5
==>ok!
目前發現是 JDK的問題:
a.若是用JDK1.4那console得設定成big5才行!
b.若是用JDK6,那用UTF-8就沒問題!
沒有留言:
張貼留言