1. 程式人生 > >get方式中文亂碼問題

get方式中文亂碼問題

<a target="_blank" href="ftpFileAction!downloadFile.action?filename=測試.xml">點選下載</a>

如果當前頁面編碼是utf-8.

這裡是main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

以及head頭

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

並且main.jsp本身的檔案編碼是utf-8.

如果是post方式,Servlet後臺設定request.setCharacterEncoding('utf-8')後一定得到正確中文。

但對於get方式,get方式提交引數若包含中文,

在我本機測試,ie下提交的使用iso-8859-1轉碼gbk可得到正常中文。

filename=new String(filename.getBytes("ISO-8859-1"),"gbk");

在firefox下提交的引數在Servlet中使用iso-8859-1轉碼utf-8可得到正常中文。

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

一定要轉碼的原因是對於get方式提交的引數,tomcat預設不會使用request.setCharacterEncoding的編碼方式轉碼,而是使用ISO-8859-1。

要保證各瀏覽器相容性,

可以在get方式提交引數時,把引數進行轉碼。

encodeURI(適合編碼整個URI)和encodeURIComponent(適合編碼URI的一部分引數)

js指令碼:

filename=encodeURIComponent('測試.xml');

'<a target="_blank" href="ftpFileAction!downloadFile.action?filename='+filename+'">點選下載</a>'

註明:

encodeURI, encodeURIComponent 是 UTF-8 的
escape 是  Unicode 的

escape不編碼字元有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不編碼字元有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不編碼字元有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

相關推薦

request請求post、get方式中文亂碼處理

第一種方式:獲取以後自己轉碼String name = request.getParameter("name"); String age = request.getParameter("age"); String aaa = request.getParameter(

get方式中文亂碼問題

<a target="_blank" href="ftpFileAction!downloadFile.action?filename=測試.xml">點選下載</a> 如果當前頁面編碼是utf-8. 這裡是main.jsp <%@ page language="jav

from 表單get 方式中文亂碼

本地環境 在tomcat server.xml 配置   <Connector port="8686" protocol="HTTP/1.1"                 connectio

Get提交方式中文亂碼

Get提交方式中文亂碼   今天在servlet使用中,在Get方法中獲取提交的中文引數,發現是亂碼,我用的是Tomcat7。   在Tomcat9中: get方式的引數是放在請求頭中,而Tomcat9對請求頭的解碼方式預設是utf8,所以get方式不會中文亂碼。 post方式的引數是放在請求體中,而Tom

解決SpringMVC的GET請求中文亂碼

進行轉碼 @RequestMapping("querySupplyToJSON") @ResponseBody public List<Supply> querySupplyByJson(Supply supply) throws UnsupportedEncodingExcep

tomcat 7 GET請求中文亂碼

方法一: 修改server.xml: URIEncoding="utf-8" <Connector port="8080"  protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" 

Filter解決POST,GET提交中文亂碼問題

中文亂碼是一個非常煩人的問題,沒有學習Filter之前,每次都要進行轉碼 request.setCharacterEncoding("UTF-8");get還要進行轉碼.很是麻煩啊.後來學習到了Filter一下就可以只寫一次,再也不用寫了.媽媽再也不用擔心我的亂碼問題了. 另外說一下,tom

post與get請求中文亂碼問題

首先POST與GET請求的應用場景: 除了form表單提交和ajax指定post請求可以使post,其他都是get請求,比如瀏覽器直接寫URL或者A標籤 POST請求: 配置編碼過濾器:解決post請求中文亂碼 <filter>

HttpClient 傳送Get請求 中文亂碼

使用背景:使用HttpClient傳送Get請求的時候,有中文引數,在Servlet中接收的時候,取出請求的引數,然後在Servlet中轉發Get請求。在Servlet中轉發的Get請求的引數是GBK編碼的。         不管我怎麼設定編碼,總是失敗。        

Java開發中get方法中文亂碼解決

開發中遇到這個問題,查閱資料後得以解決,寫了兩個,也可以說是一個,只是將同一個方法分開寫和合起來寫。 //get請求方式接收到的中文字串 String name = request.getParameter("userName");

對實際專案中的get請求中文亂碼以及post請求中文亂碼的解決方案

1.解決post請求的中文亂碼問題 (1)在專案中web.xml配置檔案中加入: <filter> <filter-name>CharacterEncodingFilter&

tomcat中get請求中文亂碼

1 修改tomcat配置檔案conf/server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"

Spring mvc GET請求中文亂碼問題

最初使用@ResponseBody盡心ajax,很方便,但後來發現請求引數中有中文的話會產生亂碼 第一天太晚了,未解決問題 第二天發現,所有的get請求引數有中文都會出現亂碼,但: <filter>     <filter-name>encoding

get 方式請求亂碼以及用Jquery ajax 亂碼問題的解決;

 先說用jquery ajax 亂碼問題 的解決:  jsp:     var planname=        encodeURIComponent($("#planname").val()); $.ajax({         type: 'post',   

get請求中文亂碼問題解決和引數編碼

在web專案中,我們通常的請求方式都是get/post,但get方式有一個問題,就是引數是中文的時候容易亂碼,而且引數在路徑中可以看到,不安全,我的解決辦法是,對引數進行編碼,這樣可以解決如上兩個問題 1、在js中使用 encodeURI(encod

tomcat伺服器,url get請求中文亂碼解決方案

解決方法,在tomcat conf/server.xml 中新增 紅色部分,然後重啟服務即可。     <Connector port="8080" protocol="HTTP/1.1" 

購物車搜尋欄解決GET請求中文亂碼問題

昨天安排開發新功能,在購物車中加入搜尋欄,搜尋購物車中的商品是否存在,買了多少。。。。當時想想就覺得使用這商城的人都是土豪啊。。。購物車買的東西都不知道有多少,還需要增加搜尋欄進行搜尋。。。。沒想那麼多,就開始開發吧。 前端頁面基本寫完,想著位址列裡面沒有引數,想著應該是傳

get提交中文亂碼問題

最近,因為在維護的一個專案,在頁面用自定義標籤get方式提交,所以在頁面輸入關鍵字提交到後臺的時候,會有亂碼的現象,所以寫文章,為了下次更方便的使用。主要是使用了Base64 jsp頁面程式碼片段 &

如何解決GET請求中文亂碼問題?

亂碼也是一件很頭痛的事 一般情況下我們利用下面方法,可以解決Post請求中文亂碼: //將物件轉換為HttpServletRequest,HttpServletResponse HttpSe

ajax get返回中文亂碼 (jsp)

解決如下: @RequestMapping(value = "/QueryData.do", method = RequestMethod.GET, produces="text/plain;charset=UTF-8") @ResponseBody     public