文档章节

乱码之二 servlet之乱码

 独行侠
发布于 2016/04/14 16:10
字数 616
阅读 17
收藏 0
点赞 1
评论 0

一 Response(浏览器看到返回的乱码)

servlet的编译过程,跟普通的java class是一样的,其过程比jsp要简单,平时我们遇到的出现乱码的主要在于,通过servlet将一个汉字或者其他字符输出给用户的时候,用户会看到乱码。

按照乱码之一系列,我们可以保证,在java内存中的unicode的中文是正确的,在这个前提下,如果servlet的输出还是乱码,那么可以肯定的是

HttpServletResponse的encoding设置错误了,我们可以通过方法response.setCharacterEncoding设置编码。


由于jsp最终是要先转译成java再编译成class,而这个class是与servlet相一致的,在jsp中的<%@ page language="java" contentType="text/html; charset=GBK"    pageEncoding="UTF-8"%>   contentType就是上面response.setCharacterEncoding这个方法的参数。

你可以在将一个有jsp的项目deploy到tomcat并进入work目录查看生成的jsp对应的java文件,就可以看到。


即,如果我们将一个中文字符输出到eclipse console(console以及DefaultCharset一致)时,是正确的,那么我们在设置response.setCharacterEncoding("UTF-8")之后,再输出这个字符,肯定不会是乱码。



二(用户提交的数据乱码)


通常我们在获得参数的时候,是用request.getParameter(String name)这个方法来获得用户提交的参数的,只是有时候会得到乱码,这是因为我们使用了与浏览器,不一致的解码方式。

通常浏览器(我本地只用firefox进行了测试)在提交非英文字符时,是先通过提交的这个页面响应的编码进行URLEncode编码(使用charset为jsp中contentType的charset),再提交到服务器。然后在server端,通过request.setCharacterEncoding(String charset)所设置的charset进行解码


如果我们要提交的数据所在的页面所响应的charset(第一次请求对response设置的charset)与提交的数据(第二次请求)所使用的解码不一致,就会有乱码。


以上的乱码解决方法只针对post请求,get请求的数据(编码)以及解码是由开发人员决定的。


好了,这样子,我基本将项目开发中所遇到的乱码问题,以其原因和解决方法(知道原因,也就知道解决方法了)写出来,供大家参考.



© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 19
码字总数 9797
作品 0
成都
jsf开发心得(1)-jsf配置web.xml的url-pattern时出现乱码的怪事

又是郁闷的一天!!! 汗!搞jsf应用居然打开html文件的时候居然中文出现乱码!!! 怀疑是html文件的charset=UTF-8保存的时候保存为其他的编码了,但是保存文件应该是根据这个编码保存的啊。...

覃勇铖
2013/02/28
0
0
Tomcat于Eclipse集成开发问题以及解决方案

版本: JDK 1.4.2 c:/jdk1.4 Eclipse 2.1 c:/eclipse Tomcat 4.1.24 c:/tomcat4.1 Tomcat Plugins: com.sysdeo.eclipse.tomcat_2.1.0 Tomcat Patch: jasperDebugPatchV4.1.24.zip 存在的问题......

晨曦之光
2012/03/09
0
0
RequestDispatcher

一、RequestDispatcher RequestDispatcher实例对象是由Servlet引擎创建的,它用于包装一个要被其他资源调用的资源,例如Servlet、HTML文件,JSP文件等,并可以通过其中的方法将客户端的请求转...

KYZGJ
2014/04/13
0
0
Servlet监听器在开发中的应用案例

案例:显示登陆用户列表,并实现踢人功能。 登陆的jsp页面------------------------ <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C......

lee123lee
2013/09/28
0
0
关于Java Servlet的中文乱码

具体如下: 1.JSP里CHARSET要为GB2312 contentType="text/html;charset=GB2312" 2.SERVERLET类里要有 request.setCharacterEncoding(gb2312); 3.字符集的重新格式化 java.net.URLEncoder ja......

xiahuawuyu
2012/08/02
0
0
(JavaEE-07)JSP.md

JSP JSP全称是Java Server Pages,它和Servlet技术一样,都是SUN公司定义的一种用于开发动态Web资源的技术。JSP的编写就像编写HTML一样简单,但是与HTML不同的是,在JSP中,可以编写Java代码...

_-Leon-_
2014/07/04
0
0
(JavaEE-05)Response与Request

如何才算掌握Servlet ServletConfig ServletContext Request Response Cookie Session 上面这些对象(当然不止这些,剩下的对象查阅ServletAPI,不是JavaEEAPI)都是web服务器在条用Servlet...

_-Leon-_
2014/06/27
0
0
jsp网页开发中超链接传递参数出现中文乱码怎么办?

首先说明一点的是:jsp网页开发中超链接传递参数出现中文“乱码”不是真的乱码,而是另一种编码方式,所以可以统一转换成字节流,在转换成utf-8即可。 超级简单是不是: 我举个例子,在jsp页...

Ieenben
2014/05/21
0
0
Web应用导出Excel报表的简单实现

在Web应用中,很多数据经常要导出成Excel文档。用专门的生成真正的Excel文档的方式比较复杂,不太好用。所以经常用一种简单的方式来实现,即将报表保存为HTML格式,然后用Excel打开。 实现方...

诺灬晓月
2011/11/04
0
0
Tomcat下中文乱码问题的解决思路

现在将常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类。 1)JSP页面中显示中文乱码 在JSP文件中使用page命令指定响应结果的MIME类型,如<%@ page language="java" contentType="t...

大漠过客
2013/06/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Android Studio 3.0 之后打包apk出现应用未安装问题

1、废话 出现这个问题的原因,并不是只有一个,而是有多个原因,不懂的估计会被搞得一头雾水,下面我列举的是我遇到的几种问题和网友遇到的几种问题,但不一定是全部,也有可能有些莫名其妙的...

她叫我小渝
20分钟前
0
0
前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
7
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部