javascriptstrutsjava測試importjspjavascript
最多使用的應爲encodeURIComponent,它是將中文、韓文等特殊字符轉換成utf-8格式的url編碼,因此若是給後臺傳遞參數須要使用encodeURIComponent時須要後臺解碼對utf-8支持(form中的編碼方式和當前頁面編碼方式相同)
escape不編碼字符有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不編碼字符有82個:!,#,$,&, ',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不編碼字符有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
============================================================html
作項目時,明明在 web.xml和struts中進行了字符設置 utf-8,可是 從前臺 js傳過來的參數仍是亂碼問題,在後臺使用request.setCharacterEncoding("UTF-8");仍是不行,上網上查了查原來js也有轉碼的方法,encodeURIComponent() 和 encodeURI(),下面來解決一下問題java
例如 js 代碼爲:web
var text= "關鍵字";瀏覽器
Location.href= "getChildNodeByKeyword.action?keyword="+text;jsp
傳到後臺的 keyword是亂碼測試
解決方法1:ui
var text= encodeURIComponent("關鍵字");編碼
Location.href= "getChildNodeByKeyword.action?keyword="+text;url
解決方法2:
var text= "關鍵字";
Location.href= encodeURI("getChildNodeByKeyword.action?keyword="+text);
本身感受encodeURIComponent() 和 encodeURI()的區別是 :
見上面的說明!
===================================
系統應用測試中,使用了以下語句:
UTF-8編碼,測試成功,服務端獲取正常:
decisionMaker = encodeURI(decisionMaker).replace(new RegExp("&", 'g'), "%26");//轉碼
===============Java設置編碼格式=========
首先介紹兩種字符集 gb2312 和 gbk
。gb2312 簡體中文編碼
。gbk 中文字符編碼 包括繁體中文
1. 指定jsp文件裏內容的的編碼方式
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
2. 指定html文件裏內容的編碼方式
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
3. 當響應用戶的請求時,輸出到用戶瀏覽器上的編碼方式
<%@ page contentType="text/html"; charset="gb2312"%>
至關於生成的代碼 response.setContentType("text/html; charset=gb2312");
4. 把用戶傳遞過來的參數做爲指定的編碼
request.setCharacterEncoding("gb2312");
5. 對比 request.setCharacterEncoding("gb2312"); //設置輸入編碼格式 response.setContentType("text/html; charset=gb2312"); //設置輸出編碼格式