日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中文 x_java环境url中文参数乱码处理

發布時間:2024/10/6 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中文 x_java环境url中文参数乱码处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在做搜索開發過程中,由于翻頁功能需要,要把當前查詢的中文條件放在URL中帶到服務器進行下一頁查詢,結果出現亂碼情況。

此時情況有如下兩種:

1、在輸入框輸入搜索內容,直接通過from提交,參數值正常讀到,沒有亂碼。

2、把中文參數UTF-8編碼后,添加到URL后,然后服務器讀取到亂碼。

服務端使用Spring框架MVC模型處理WEB請求,web.xml配置如下:

org.springframework.web.context.ContextLoaderListener

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

encodingFilter

/*

appServlet

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

/WEB-INF/servlet-context.xml

1

appServlet

*.htm

剛剛開始時,以為是過濾器的問題,通過查詢后發現,原來CharacterEncodingFilter只有會對POST的數據有效。

spring的CharacterEncodingFilter的過濾機制,該過濾器的源碼:

protected voiddoFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)throwsServletException, IOException {if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {

request.setCharacterEncoding(this.encoding);

//這行代碼決定了過濾器的過濾機制,這行代碼只會對請求正文進行編碼,這對于POST方式的請求有效; //當請求方式為GET時,需要的參數位于請求頭的URI中,不會受到該行代碼影響。

//所以,spring的CharacterEncodingFilter對于GET方式的HTTP請求,無能為力。

if (this.forceEncoding && responseSetCharacterEncodingAvailable) {

response.setCharacterEncoding(this.encoding);

}

}

filterChain.doFilter(request, response);

}

既然spring的CharacterEncodingFilter對GET方式的HTTP請求無影響,那繼續查找其它原因。

當我們通過瀏覽器提交數據到Tomcat服務器時,首先接觸數據的當然是服務器本身啦,然后找到原因了,修改tomcat的配置文件:conf/server.xml 找到connector節點,修改如下:添加URIEncoding="UTF-8"

如果是通過https進行加密訪問時,URIEncoding="UTF-8"同樣適用

總結

以上是生活随笔為你收集整理的java中文 x_java环境url中文参数乱码处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。