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

来源:6-4 案例:Cookie在登录中的应用

shuoclarence

2015-02-01 21:44

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

  • 小王子抓猫咪
    2015-02-08 17:08:05
    已采纳

    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");

    shuocl...

    非常感谢!

    2015-11-16 16:57:42

    共 1 条回复 >

  • Coda
    2015-02-02 09:20:48

    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"  %>


    shuocl...

    这两个配置都设置了,都设置成了utf-8

    2015-02-02 10:24:30

    共 1 条回复 >

JAVA遇见HTML——JSP篇

Java Web入门级教程JSP,带你轻松的学习JSP基础知识

248279 学习 · 3071 问题

查看课程

相似问题