从form表单提交信息到一个JSP页面或者一个Servlet进行处理的时候,提交的中文信息若不加处理的话就会显示乱码,如一串???。现在通过一个例子来进行总结如下:

写一个用户信息提交页面,通过这个页面向一个JSP页面或者一个servlet提交用户信息,代码如下:

1

23

4表单提交5678        用户名:
9        密  码:
10        爱  好:运动 11音乐
12  131415

现在写deal处理页面,代码如下:

1

23

4显示用户信息567//request.setCharacterEncoding("gb2312");9String username=request.getParameter("username");10//String username = new String(request.getParameter("username").getBytes("iso-8859-1"),"gbk");11String password=request.getParameter("password");12//String love = new String(request.getParameter("love").getBytes("iso-8859-1"),"gbk");13String love=request.getParameter("love");14%>15您好,你的密码是:,您的爱好是:!1617

从前面的信息提交页面提交来的信息包含中文,这时就会出现乱码。如:

??????您好,你的密码是:1234569,您的爱好是:????!

现在,把第8行的注释符号去掉,重新执行页面(请确保web服务器会自动加载更改后的页面,否则请重新启动web服务器),这时可以看到正确的中文信息了,如:

王冰您好,你的密码是:9856322,您的爱好是:音乐!

也可以使用另外一种方法进行处理,把deal.jsp的第8行注释掉,然后把第9行、第13行也注释掉,去掉第10行和第12行的注释符号,保存好重新执行页面(方法同上),同样会显示正常的信息。

下面通过前面的信息提交页面向一个servlet提交信息,然后对其中的中文乱码进行处理。写一个servlet程序(formdeal.java),如下:

1

packageorg.wzhongyu;23importjava.io.IOException;4importjava.io.PrintWriter;5importjavax.servlet.ServletException;6importjavax.servlet.http.HttpServlet;7importjavax.servlet.http.HttpServletRequest;8importjavax.servlet.http.HttpServletResponse;910

publicclassformdealextendsHttpServlet{11

publicvoiddestroy(){12super.destroy();//Just puts "destroy" string in log13//Put your code here14}1516publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)17

throwsServletException, IOException{18this.doPost(request, response);19    }2021publicvoiddoPost(HttpServletRequest request, HttpServletResponse response)22

throwsServletException, IOException{23//response.setContentType("text/html; charset=gbk");24PrintWriter out=response.getWriter();25//request.setCharacterEncoding("gbk");26String username=request.getParameter("username");27        String password=request.getParameter("password");28        String love=request.getParameter("love");29        out.print("您的用户名:"+username+"
");//30out.print("您的密码:"+password+"
");//31out.print("您的爱好:"+love);//32}33

publicvoidinit()throwsServletException{34//Put your code here35}36}37

该servlet的部署描述文件(web.xml)如下:

1

<?xml  version="1.0" encoding="UTF-8"?>2    xmlns="http://java.sun.com/xml/ns/javaee"4    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"5    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee6    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">78This is the description of my J2EE component9This is the display name of my J2EE component10formdeal11org.wzhongyu.formdeal12131415formdeal16/servlet/formdeal1718把信息提交页面的第7行改为:

重新部署并执行页面,同样看到显示的中文信息是乱码。现在把第23行的注释符去掉,重新执行会看到下面的信息,提交过来的中文信息是乱码:

您的用户名:??????您的密码:123465您的爱好:????把第25行的注释符也去掉,重新执行,可以看到可以显示正常的信息了,如下:

您的用户名:王冰

您的密码:5632215您的爱好:音乐如果只去掉第25行的注释,执行程序则会显示下面的信息:

??????????????123456???????由此可见,这个两个都不可以忽略掉,也可以从下面的方式验证必须写上两个,把formdeal.java里的第29,30,31行的中文换成英文,同样注释掉第23行,而不要注释掉第25行,执行后显示的信息如下:

username???password65462458

love??

这是由于没有设置servlet响应的页面的字符编码造成的。

在servlet里也可以这样进行处理,把第25行注释掉,而不要注释第23行,把第26行和第28行分别改为如下代码:

String username=newString(request.getParameter("username").getBytes("iso-8859-1"),"gbk");

        String love=newString(request.getParameter("love").getBytes("iso-8859-1"),"gbk");这样也可以正常显示中文信息。

1

2011年2月27日补充23源于最近项目在不同的Linux系统中部署导致部分程序字符为乱码的问题,进行处理时需要注意以下问题:4getBytes()方法在将字符串进行转码时,是根据操作系统平台的默认字符编码进行转码的。5getBytes(Charset charset)方法是使用指定的字符编码进行转码。67对于乱码问题,最好是项目的所有出入口都统一编码,文件的编码也要统一,请求部分使用过滤器进行处理。

posted on 2007-11-11 17:41 wzhongyu 阅读(3190) 评论(2)  编辑  收藏 所属分类: Java学习

java servlet 参数乱码_JSPServlet处理参数中的中文乱码总结相关推荐

  1. matlab ubuntu 显示乱码_解决Linux中Matlab中文乱码问题

    解决 Linux 中 Matlab 中文乱码问题 由于 Linux 下 Matlab 的图形界面是用 Java 写的,所以只要搞定 Java 的中文显 示就行了. 1 . 我 Matlab2007a ...

  2. ajax 传输中文乱码,关于Ajax请求中传输中文乱码问题的解决方案

    今天遇到一个问题,有关ajax 请求中传输中文,遇到乱码的问题. 如下代码: function UpdateFolderInfoByCustId(folderId, folderName, custI ...

  3. java中文乱码decode_Java WEB开发中的中文乱码问题解决

    在项目中总是遇到乱码问题,有时候在网上查找到了解决方案,但是没有记录下来为什么出现的乱码.因为出现乱码的方式有好几种,我简单总结一下吧,为以后留着用,也算总结学习一下. 一般来讲,为了处理乱码问题,在 ...

  4. java输出的汉字变成乱码_Java Web项目中解决中文乱码方法总结

    一.了解常识: 1.UTF-8国际编码,GBK中文编码.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.web tomcat:默认是ISO8859-1,不 ...

  5. linux java乱码怎么解决,linux中显示中文乱码如何解决

    #第一步-排查 #第1个里程碑-看看linux系统的字符集 echo $LANG #第2个里程碑-远程连接工具 xshell/SecureCRT/putty 字符集 #第二步-修改 修复 修改字符集 ...

  6. matlab 字符乱码问号,解决Linux中Matlab中文乱码问题

    由于Linux下Matlab的图形界面是用Java写的,所以只要搞定Java的中文显示就行了. 1.我Matlab2007a的JRE目录为:/opt/matlab/sys/java/jre/glnx8 ...

  7. python爬虫中文乱码_Python 爬虫过程中的中文乱码问题

    python+mongodb 在爬虫的过程中,抓到一个中文字段,encode和decode都无法正确显示 注:以下print均是在mongodb中截图显示的,在pythonshell中可能会有所不同 ...

  8. jsp中解决中文乱码问题(基础问题)

    在两个jsp简单页面编写中,出现了一个问题,出现了中文乱码, 本应该出现的中文显示不出来,分析如下:java编程之所以会出现说出现中文乱码是 因为:Java的内核和class文件是基于unicode的 ...

  9. 如何解决oracle中文乱码问题,oracle中解决中文乱码问题

    中文乱码问题解决 1.查看服务器端编码 select userenv('language') from dual; 查到结果是: USERENV('LANGUAGE') --------------- ...

最新文章

  1. InfluxDb中写入重复数据问题解决方案
  2. Docker Toolbox替换默认docker machine的存储位置
  3. 将两个数组河滨_两名3岁男孩在河滨公园玩耍迷了路 幸亏被好心人“捡”到
  4. MySQL Connector/ODBC 5.2.2 发布
  5. mysql二进制文件复制_MySQL 主从复制:基于二进制文件复制配置详解
  6. The Longest Increasing Subsequence (LIS)
  7. web.xml详细介绍
  8. python学习笔记(12)-python语法要求(缩进、标识符、变量)
  9. 转:采用geodatabase做乡界的一点总结
  10. php全套之一崭露头角(12天),PHP系列教程之一阶段崭露头角 (JS,bootstrap )
  11. 使用JSON的RESTful云数据库
  12. 闲来无事,仿了一个百度杀毒主界面
  13. jQuery1.9.1源码分析--Deferred对象和Promise对象
  14. 展开和收起动画(jQuery)
  15. [原]VC被控制时关闭极域电子教室、破解联想硬盘保护系统密码(下)
  16. 项目进度管理工具——甘特图
  17. SDM439/SDM429/SDM450 Sensors Overview (80-PF208-11)
  18. 为什么在AndroidManifest.xml中Activity的theme用不了Theme.Light.NoTitleBar?
  19. HTML+CSS 绘制太阳系各个行星运行轨迹
  20. 测试你的身份证号码最后一位,校验码的生成方式

热门文章

  1. 2022-2028年中国智慧物流行业深度调研及投资前景预测报告(全卷)
  2. pytorch学习笔记(九):PyTorch结构介绍
  3. pytorch nn.LSTM()参数详解
  4. MySQL最新版8.0.21安装配置教程~
  5. Minkowski坐标管理
  6. ARM的突破:超级计算机和Mac
  7. CUDA C++编程接口:编译
  8. CVPR2019论文看点:自学习Anchor原理
  9. 三维目标检测算法原理
  10. 客快物流大数据项目(十四):DockerFile介绍与构建过程解析