請問,若想判斷輸入的中文用戶名是否與給定用戶名相同,如何判斷?
我寫的代碼想加一個判斷用戶名密碼是不是給定用戶名密碼的功能,便多寫了一段程序,寫完之后發(fā)現(xiàn)用戶名為英文時判斷沒有問題,但是中文就有問題,這是我接收到用戶名密碼并處理的jsp文本中的一段代碼:
request.setCharacterEncoding("utf-8");
String un = ?URLEncoder.encode(request.getParameter("username"),"utf-8");
String pw= URLEncoder.encode(request.getParameter("password"),"utf-8");
if(URLDecoder.decode(un, "utf-8").equals("中文用戶名")&&pw.equals("12345"))
{
????……
}
經(jīng)過多次試驗我發(fā)現(xiàn)request.getParameter("username")已被轉(zhuǎn)碼(不是中文),un已被轉(zhuǎn)碼(不是中文),URLDecoder.decode(un, "utf-8")已被轉(zhuǎn)碼(不是中文),URLDecoder.decode(request.getParameter("username"), "utf-8")也被轉(zhuǎn)碼(不是中文),那如何獲得用戶輸入的中文字符并做出判斷呢?
2015-02-08
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
分別設(shè)置Request的Post請求編碼和Response響應(yīng)編碼
想要設(shè)置Get的請求編碼,由于Get的請求編碼默認是ISO編碼,你需要從Request中獲取該中文內(nèi)容
String username=request.getParameter("name");
byte[] bytes=username.getBytes("ISO-8859-1");
username=new String(bytes,"utf-8");
2015-02-02
jsp的頁面編碼你設(shè)置了沒有?pageEncoding是jsp文件本身的編碼contentType的charset是指服務(wù)器發(fā)送給客戶端時的內(nèi)容編碼,jsp要經(jīng)過兩次的“編碼”,第一階段會用pageEncoding,第二階段會用utf-8至utf-8,第三階段就是由Tomcat出來的網(wǎng)頁, 用的是contentType。
第一階段是jsp編譯成.java,它會根據(jù)pageEncoding的設(shè)定讀取jsp,結(jié)果是由指定的編碼方案翻譯成統(tǒng)一的UTF-8 JAVA源碼(即.java),如果pageEncoding設(shè)定錯了,或沒有設(shè)定,出來的就是中文亂碼。
第二階段是由JAVAC的JAVA源碼至java byteCode的編譯,不論JSP編寫時候用的是什么編碼方案,經(jīng)過這個階段的結(jié)果全部是UTF-8的encoding的java源碼。