为了账号安全,请及时绑定邮箱和手机立即绑定

请问,若想判断输入的中文用户名是否与给定用户名相同,如何判断?

我写的代码想加一个判断用户名密码是不是给定用户名密码的功能,便多写了一段程序,写完之后发现用户名为英文时判断没有问题,但是中文就有问题,这是我接收到用户名密码并处理的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"))

{

    ……

}

经过多次试验我发现request.getParameter("username")已被转码(不是中文),un已被转码(不是中文),URLDecoder.decode(un, "utf-8")已被转码(不是中文),URLDecoder.decode(request.getParameter("username"), "utf-8")也被转码(不是中文),那如何获得用户输入的中文字符并做出判断呢?

正在回答

2 回答

request.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

分别设置Request的Post请求编码和Response响应编码

想要设置Get的请求编码,由于Get的请求编码默认是ISO编码,你需要从Request中获取该中文内容

String username=request.getParameter("name");

byte[] bytes=username.getBytes("ISO-8859-1");

username=new String(bytes,"utf-8");

0 回复 有任何疑惑可以回复我~
#1

shuoclarence 提问者

非常感谢!
2015-11-16 回复 有任何疑惑可以回复我~

jsp的页面编码你设置了没有?pageEncoding是jsp文件本身的编码contentType的charset是指服务器发送给客户端时的内容编码,jsp要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页, 用的是contentType。
第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。
第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。

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


0 回复 有任何疑惑可以回复我~
#1

shuoclarence 提问者

这两个配置都设置了,都设置成了utf-8
2015-02-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问,若想判断输入的中文用户名是否与给定用户名相同,如何判断?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信