Tomcat 5環境下的jsp中文亂碼問題(分別針對POST、GET方法)
請教:Tomcat 5環境下的jsp中文亂碼問題(分別針對POST、GET方法)
我知道這個問題肯定已經問過很多次了,不過我搜尋了一下,雖然帖子不少,看完以後還有些疑問想請教一下。
1、從我看過的一些相關文章來看,對於不同的jsp平臺,亂碼的解決方法並不相同,往往在Tomcat上挺好的辦法,拿到其他平臺反而更亂了。似乎確實沒有一種一勞永逸的辦法解決所有平臺上的中文亂碼問題是嗎?如果有,應該怎麼做呢?
2、如果僅針對Tomcat 5平臺,我看到過有文章介紹的方法是通過設定一個 filter 來解決POST方法的編碼問題,而通過在 server.xml 裡的 Connector 里加入 URIEncoding="GBK" 來解決GET方法的編碼問題。
設定 filter 比較簡單,不過在修改 server.xml 檔案的時候遇到了一些問題:
我的機器是將Tomcat與IIS整合到了一起,也就是可以通過 localhost/jsp/ 來訪問 tomcat目錄/webapps/jsp目錄下的內容。在 Connector 里加入 URIEncoding="GBK" 的結果是隻針對通過 http://localhost:8080/ 方法訪問的內容有效,畢竟 Connector 裡指定的port是 8080 。如果我將port改成80,那麼整個tomcat都不能啟動了。
所以上述方法來解決GET亂碼似乎不成功,不知道我應該怎麼做?
3、因為我修改 Connector 不能成功,所以想通過修改 filter 來解決問題,我想在其中加一個判斷,如果是POST方法,就呼叫 setCharacterEncoding(encoding) 來處理,如果是GET方法,則通過類似 String name = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"GBK") 的方法來處理。可是我該如何將整個 QueryString 處理完的結果存回到 request 中以便繼續傳遞呢?能否請各位高手給提供一個大概思路?
4、如果上面方法再不成功,那麼似乎只能將處理編碼的過程作成一個bean,然後每個jsp檔案通過呼叫該bean來處理亂碼,是這樣嗎?
以上是小弟的一個在Tomcat環境下處理中文亂碼的思路,不知道各位都是用什麼方法解決這類問題的呢?請幫忙提示一下。謝謝!
問題點數:20、回覆次數:4Top
1 樓ETCN(天外來客)回覆於 2005-01-13 16:02:29 得分 0
下面轉一下我在第2個問題裡提到的文章:tomcat5中文問題解決之道(原創)
mineral
http://www.jdon.com
May 9, 2004 9:20 PM
在tomcat5中發現了以前處理tomcat4的方法不能適用於處理直接通過url提交的請求,上網找資料終於發現了最完美的解決辦法,不用每個地方都 轉換了,而且無論get,和post都正常。寫了個文件,貼出來希望跟我有同樣問題的人不再像我一樣痛苦一次:-)
上傳檔案有問題,只好直接貼了,難看點:-)
-------------------
Tomcat 5中文問題
author:kiss__sky@163.com
-------------------
問題描述:
1 表單提交的資料,用request.getParameter("xxx")返回的字串為亂碼或者??
2 直接通過url如http://localhost/a.jsp?name=中國,這樣的get請求在服務端用request.getParameter ("name")時返回的是亂碼;按tomcat4的做法設定Filter也沒有用或者用request.setCharacterEncoding ("GBK");也不管用
原因:
1 tomcat的j2ee實現對錶單提交即post方式提示時處理引數採用預設的iso-8859-1來處理
2 tomcat對get方式提交的請求對query-string 處理時採用了和post方法不一樣的處理方式。(與tomcat4不一樣,所以設定setCharacterEncoding("GBK"))不起作用。
解決辦法:
首先所有的jsp檔案都加上:
1 實現一個Filter.設定處理字符集為GBK。(在tomcat的webapps/servlet-examples目錄有一個完整的例子。請參考web.xml和SetCharacterEncodingFilter的配置。)
1)只要把%TOMCAT安裝目錄%/ webapps/servlets-examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.class 檔案拷到你的WEB-INF/classes目錄filters下,如果沒有filters目錄,就建立一個。
2)在你的web.xml里加入如下幾行:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3)完成.
2 get方式的解決辦法
1) 開啟tomcat的server.xml檔案,找到區塊,加入如下一行:
URIEncoding=”GBK”
完整的應如下:
<Connector
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="GBK" />
2)重啟tomcat,一切OK。
執行如下jsp頁頁測試是否成功
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*"%>
<%
String q=request.getParameter("q");
q = q == null? "沒有值" : q;
%>
<HTML>
<HEAD><TITLE>新聞列表顯示</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=pragma content=no-cache>
</HEAD>
<body>
你提交了:
<%=q%>
<br>
<form action="tcnchar.jsp" method="post">
輸入中文:<input type="text" name="q"><input type="submit" value="確定">
<br> <a href="tcnchar.jsp?q=中國">通過get方式提交</a>
</form>
</BODY>
</HTML>
測試結果如果你輸入文字框或者點超鏈都會顯示:你提交了”中國”,說明成功!!!!!
特別感謝下面這篇帖子,幫我解決了中文問題.最後祝大家好運!!!
參考網址:
http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042&sty=1&tpg=1&age=0
【來源】
相關文章
- Tomcat配置jsp亂碼問題TomcatJS
- 解決ajax get post方式提交中文引數亂碼問題
- tomcat-windows環境頁面亂碼問題TomcatWindows
- Postman 使用 Get 請求 URL 傳參中文亂碼的問題Postman
- IDEA中Tomcat亂碼問題IdeaTomcat
- IDEA裡Tomcat Console日誌中文亂碼問題解決IdeaTomcat
- 記錄PHP post提交表單匯入mysql中文亂碼的問題PHPMySql
- SAP UI5 應用的中文亂碼問題UI
- Get提交方式中文亂碼
- vscode中文亂碼問題VSCode
- EasyUI 中文亂碼問題UI
- Mysql中文亂碼問題的最佳解決方法MySql
- LINUX下掛載U盤,中文亂碼的問題Linux
- 幾種常見的JSP中文亂碼JS
- Servlet中request請求Get和Post方法以及亂碼解決Servlet
- 解決tomcat啟動控制檯輸出中文亂碼問題-ideaTomcatIdea
- jsp頁面通過url向後臺傳值時的中文亂碼問題JS
- 解決中文亂碼問題
- Python BeautifulSoup中文亂碼問題Python
- idea控制檯中文亂碼的問題Idea
- TOMCAT 請求資料編碼亂碼 問題Tomcat
- confluence中文顯示亂碼問題
- springmvc 解決中文亂碼問題SpringMVC
- MySql中文亂碼問題解決MySql
- Jmeter 解決中文亂碼問題JMeter
- Java GBK 中文亂碼問題分析Java
- requests.get()爬去中文網頁亂碼解決方法網頁
- 【日誌亂碼】解決Tomcat啟動控制檯亂碼問題Tomcat
- 如何解決PuTTY中文亂碼的問題
- 解決Tomcat視窗中文亂碼Tomcat
- GET和POST的區別?
- POST 和 GET 的區別
- post與get的區別
- GET 與 POST 的區別
- GET和POST的區別
- get與post的區別?
- GET 和 POST 的區別
- http請求中get和post方法的區別HTTP
- GET 和 POST 的區別(重要,面試常問)面試