jsp页面显示中文乱码解决

合集下载

JSP 处理汉字乱码

JSP  处理汉字乱码

JSP 处理汉字乱码
当request对象获取客户提交的汉字字符时,会出现乱马问题,必须进行特殊处理。

即从浏览器中向服务器发送数据,可以使用request.setCharacterEncoding( )方法来处理乱码。

文件名:Jspform.jsp
在上述代码中,主要通过一个form表单将“姓名”和“住址”信息,传递到requestBm.jsp页面中。

在上述的代码中,在通过request 对象接收form 表单传递的参数之前,选择通过request.setCharacterEncoding( )方法,将该对象的编码格式设置为“UTF-8”。

然后,通过接收并显示内容,此时不会产生乱码。

例如,浏览Jspform.jsp 页面,在“用户注册信息”表单中,分别输入“姓名”和“住址”信息,如图4-4
所示。

然后,单击【提交】按钮,即可转到requestBm.jsp 页面,并显示从文本框中获取的文本内容,如图4-5所示。

图4-4 输入汉字内容 图4-5 显示汉字信息
在通过request.setCharacterEncoding( )方法设置request 对象编码时,用
户需要注意提交的form 表单页面的编码格式,如Jspform.jsp 页面为
“UTF-8”格式,即在requestBm.jsp 页面中设置request 对象编码格式
为“UTF-8”。

jsp页面传值中文乱码 网页乱码 jsp过滤器过滤乱码等乱码处理办法

jsp页面传值中文乱码 网页乱码 jsp过滤器过滤乱码等乱码处理办法

一、jsp页面间传值中文乱码问题解决办法<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <form action="b.jsp">name:<input type=text name=name><input type=submit></form>b.jsp页面内容:<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <%String name=request.getParameter("name");%><body><%=name%></body>现象:中文乱码,比如“??????”解决方法如下:方法一:1. 在b.jsp中把pageEncoding="GB2312"改为pageEncoding="ISO885Array-1"虽然这样b.jsp页面显示的内容还是乱码,但是不是那种“??????”的乱码,而是一些特殊字符2. 然后在浏览器中查看菜单中修改成GB2312的编码,这时乱码就显示中文了。

3. 但是这种方法是不可行的。

方法二:( 已经验证可行)1. 在b.jsp中把String name=request.getParameter("name");修改为String name=new String(request.getParameter("name").getBytes("ISO-885 Array-1"),"GB2312");2. 这时再在页面上显示,则就是中文了。

中文乱码问题及其解决办法

中文乱码问题及其解决办法

中⽂乱码问题及其解决办法1.解决HTML页⾯中的中⽂问题:为了使HTML页⾯很好地⽀持中⽂,就必须在每个HTML页⾯的头部增加如下代码:<HEAD>...<META http-equiv=Content-Type content="text/html;charset=gb2312">...<HEAD>2.解决JSP页⾯中的中⽂问题<%@ page contentType="text/html;charset=gb2312" language="java"%>3.解决Servlet请求和响应结果的中⽂问题为了使Servlet页⾯很好地⽀持中⽂,就必须在每个Servlet页⾯的头部增加如下代码:response.setCharacterEncoding("gb2312");request.setCharacterEncoding("gb2312");4.解决页⾯数据传输的中⽂问题为了使中⽂数据在各页⾯(组件)之间正常传递,最佳的⽅法就是采⽤编码过滤器来解决。

在WEB.XML中配置⼀个编码过滤器,内容如下:<!--定义编码过滤器--><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>gb2312</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>5.解决HTTP(get)请求中的中⽂问题:在默认情况下,IE浏览器发“ISO-8859-1”的编码格式发送请求,如果接收到HTTP的get请求中⽂参数时出现乱码,就可以对其进⾏编码转换,例如:String param = request.getParameter("param");param = new String(param.getBytes("ISO-8859-1", "GB2312"));也可以通过修改Tomcat的server.xml⽂件来解决:<Connector port = "8080"...URIEncoding="GB2312"/> -->增加这项6.解决MySQL数据库的中⽂问题:解决MySQL数据库中⽂问题主要在JDBC驱动的URL上,例如:jdbc:mysql://localhost/test?user=root&password=123456&useUnicode=true&characterEncoding=gb2312在设计数据表的时候也要指明其编码⽅式。

JSP中文乱码问题及解决方法

JSP中文乱码问题及解决方法

中文 乱 码 问题 。原 因主 要有 两点 .第 一是 J P文件 和 文 变成 乱码 。 决方 法如 下 : S 解 在数 据库 连接 字符 串 中插 入 数 据 时 加 入 编码 字 符 集 Sr gU l " b : le e: tn r j c qsr r/ i = d s v / Jv aa本身 编译 时产 生的乱 码 问题 。第 二是 Jv aa程序 与
<fl r / t > i e
< itr ma p n > fl - p i g e
< h r a > i f e-n me
< r—p t r > * u l p t m> u l a t n / < r- a t e / e
文乱 码 的问题 。 能一 直 困扰 着 大家 。 可 那是 什 么原 因会
程 中 。 用 的编码 方式 与源 文件 的编码 方式 不 相 同 . 使 就 会 出现 中文 乱码
rso s. to t tye” x hr ; astG K” ep ne eC ne T p (t t tl hre= B ) s n e / ac ;
"B ) G K”;
3 . 数据库 中读取 的数 据是乱码 4从 3 常见 中文 问题及 其解 决方 法 、 当从 数 据 库 里 的 表 读 取 数 据 时 发 现 读 到 的 是 乱 J P动 态 网站开 发 中 。 S 出现 中文乱 码 主要 可 以分为 码 . 是 因为 数据 类 型是 vrh r和 t t 型造 成 中文 那 aca e 类 x 以下 4种 情 况 :S J P页面 显示 的 乱码 . 单 提 交 的 中文 乱码 . 到这种 问题 可 以用 如下 方法 解决 : 果是 v r 表 遇 如 a- 是 乱码 , 据库 连接 出现乱 码 。 数 从数 据 库 中读 取 的数据 ca 类 型 可把 它 设 为 bnr hr iay属 性 就 可 以解 决 中文 问 是 乱码 。 题 。 果是 t t 型 就要 用个 编码 转换 类来 处 理 , 如 e 类 x 方法 31 S . J P页 面里 的中文 内容显 示乱码 如下所 示 : 当 J P页 面 里 输 出 的 中 文 内 容 为 乱 码 。 原 因是 S p bi casC n etA o B I ul l ovr tB c s A

jsp页面传值中文乱码问题解决

jsp页面传值中文乱码问题解决

JSP中文乱码种类
1.JSP文件中文内容显示乱码
2.调用Servlet显示乱码
3.Post表单乱码
4.Get参数乱码
5.存取数据库乱码
1
•通过浏览器调用JSP页面,在客户端浏览器中所有的中文内容出现乱码
•解决方案:替换ISO-8859-1,修改页面编码为UTF-8
调用Servlet显示乱码
•通过浏览器调用Servlet,Servlet在浏览器中显示内容出现乱码
调用Servlet显示乱码
•解决方案:在Servlet使用response在输出内容之前,先执行response.setContentType("text/html;charset=UTF-8")设定输出内容的编码为UTF-8
Post表单乱码
•提交页面表单元素给对应的JSP页面或者Servelt后,接收方出现表单数据中文值乱码
Post表单乱码
•解决方案:在接收POST提交的参数之前,使用request.setCharacterEncoding(“UTF-8")设定接收参数的内容使用UTF-8编码
Get查询字符串乱码
•用Get方式传递参数,中文字符会出现乱码
ISO8859_1ISO8859_1gb2312gb2312
客户端通过GET 提交中文编码问题简单流程:
假如:
客户端和服务器用gb2312
HTTP 传输编码用ISO8859_1
则:
服务器需要指示客户端文档的编码方式
Get查询字符串乱码
•解决方案:Get提交默认是以ISO88591传递,如果容器没有做配置修改,程序则需要手工进行编码转换
存取数据库乱码
•解决方案:在数据库连接参数中设置编码值。

完美解决JS中汉字显示乱码问题(已解决)

完美解决JS中汉字显示乱码问题(已解决)

完美解决JS中汉字显⽰乱码问题(已解决)如题,刚才看了⼏篇⼤家的讨论,忽然也想起要将⾃⼰最近研究的问题贴出来,凡是和JS中乱码相关的问题都发到这⾥把,⼤家⼀起研究。

:)场景⼀:write写出来的内容是utf-8格式的,如果保存的write数据中有不是utf-8编码的中⽂,对write嵌套俩次以上就会有乱码。

由于⼿头没有现成的⽂件,刚才临时制作了⼀个,这是1.htm页⾯的代码:复制代码代码如下:<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><script language="JavaScript" src="1.js"></script></head><body onload=myjs(1)></body></html>这是引⽤的1.js⽂件代码,俩个⽂件均⽤简体中⽂保存⽽不是utf-8复制代码代码如下://这是JS递归⾃写过程中汉字乱码的演⽰程序//不光是中⽂内容不⾏,就连注释如果是中⽂有时候也不⾏//感觉JS⼀碰上中⽂就变得很不稳定=_='//Dec. 29th 2005 created by shouhaimu(QQ:30836570)function myjs(i){var t="<html>\n";t+="<head>\n";t+="<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>\n";t+="<script language='JavaScript' src='1.js'></script>\n";t+="</head>\n";t+="<body>\n";t+="<input type=button onclick=myjs("+(i+1)+" value='这是演⽰程序,已经运⾏了"+i+"次!'>\n";//上⾯这⾏如果改成下⾯这句就可以正常显⽰,看来确实是JS对汉字的⽀持不够好://t+="<input type=button onclick=myjs("+(i+1)+" value='This is my code,it has run "+i+" times!'>\n";t+="</body>\n";t+="</html>\n";document.open();document.write(t);document.close();}运⾏第2次以上就会有乱码。

浅析JSP中文乱码解决方案

浅析JSP中文乱码解决方案

是 G 2 1 - 0 的扩 展, 向上 兼容 的 。它包 含 了 2 0 3个汉 字和 8 3个符 B3 28 是 10 8 号, 其编 码 范围是 0 8 4  ̄ O F F , 除高位 O 8 的字位 , x 10 xE E 剔 x0 其所有 字符 都 可 以对应 到 U i o e 2 0 也就 是说 J v n c d . , a a实际 上提供 了对 G K字符 集 的支 B 持 。 G 1 0 0 2 0 ( B 2 ) 在 G K 的基础 上 进一 步扩 展 了汉字 , B 8 3 0 0 G K K B 增加 了 藏 、蒙等 少 数 民族 的 文字 。G K K 从根 本 上解 决 了 字位 不 够 、字 形 不足 B 2 的 问题 。 2如何 解决 中文 乱码 问题 因为大 部分 编程语 言是西方 人发 明的, 以很 多语言的 默 认编码 使用西 方 所 编码 方 式 : 一些 比较 受欢迎 的编程语 言 会考虑 到 国际化 的 问题, 以将 各种 字 所 符都 转换 成包 含所 有字 符 的U io e 那么 如果编 译器 或者 解释器 没办 法获 得 n cd , 代码 中 的编码 信 息, 就可 能造 成错 误 的转 换 。这就 是产 生乱 码 最直 接 的两个 原 因 。在 网页显 示 中文 的过程 中经 常 出现乱 码, 导致 中文 乱码原 因有 很多 , 而 所 以对 于此类 问题 没有 哪种 技术 是可 以完 全解 决的 。但是 只要 编程人 员 的防 护措 施 做 的全 面 就 可 以避 免 这 类事 情 发 生 。 2 1 加入 p g . a e指 令来 指 定页 面使 用 的字符 集 。 Page 指 令 的 作 用 域 是 整 个 JSP 页 面,格 式 如 下 : <%@Page

jsp页面向action传值中文乱码的问题

jsp页面向action传值中文乱码的问题

JSP页面向action传值时中文乱码的问题,记得以前做项目的时候出现过,后来我到网上搜索了一系列的资料,把所有别人说要加的条件都加上去,稀里糊涂就解决了。

最近做一个项目,又遇到这个问题,我决定试一试究竟需要注意哪几点就可以解决乱码的问题。

下面是我的结论。

1>在页面首行<%@ page langusge=”java” import=”java.util.*”pageEncoding=”UTF-8”>2>将此句加上<meta http-equiv=”Content-Type” content=”text/html;charset=UTF-8” />。

这句的意思是文档类型为html,我试过,如果这句不加,有时候没问题,有时候只要打开这个页面,上面的中文直接乱码,还没等到传值给action。

只要在页面上加上上面两条,传值给action是没有中文乱码的问题的。

而且我在web.xml特意将<filter><filter-name>EncodingFilter</filter-name><filter-class>common.util.EncodingFilter</filter-class> <init-param><param-name>characterEncoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>enabled</param-name><param-value>false</param-value></init-param></filter><filter-mapping><filter-name>EncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>注释掉,依然没有乱码。

JSP中文乱码问题解决办法

JSP中文乱码问题解决办法

JSP中文乱码问题解决办法当用request对象获取客户提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息必须进行特殊处理。

常见的几种字符集编码:⏹ASCII码:不支持中文⏹ISO-8859-1:不支持中文⏹GB2313、GBK:支持中文⏹Unicode:支持中文⏹UTF-8:支持中文在解决JSP中文乱码问题前,弄清以下几点:(1) windows平台采用的默认字符集编码是:GBK(2) IE浏览器默认采用UTF-8字符集编码方式发送Http请求。

(3) Tomcat在处理Get请求时,永远采用ISO-8859-1编码;Tomcat在处理Post请求时,默认采用ISO-8859-1编码;如果进行了如下设置request.setCharacterEncoding(“GBK”),则采用GBK编码。

可以使用如下几种方式解决JSP中文乱码问题。

1、方法一:调用自定义的转换函数<%@page contentType="text/html;charset=GB2312"%><%!public String getStr(String s) {String str = s;try {byte[] b = str.getBytes("ISO-8859-1");str = new String(b);return str;} catch (Exception e) {return str;}}%>使用内置对象request将获取的数据,使用ISO-8859-1进行重新编码,并保存到一个字节数组中,然后调用new String()方法,以GBK方式将这个字节数组构造出一个新的字符串,这个新的字符串就是我们想要的结果。

适用于以下三种情况:(1) 以Get方式提交表单,提交的数据中包含汉字字符。

(2) 以Post方式提交表单,提交的数据中包含汉字字符。

中文乱码常用解决方法

中文乱码常用解决方法
自己经验:在Servlet里跳转到jsp,在Servlet 里设置
request.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=GBK");并且放在PrintWriter out = response.getWriter();之前
xmlHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
xmlHTTP.send("username=ajax测试");
Hale Waihona Puke 2> post 方式提交(get 不能 在目标页面获取不到值) 将参数写在send()方法中 可结合Filter过滤器
如: xmlHTTP.open("post","index.jsp",true);
在目标页面解码
String name =request.getParameter("username");
name = .URLDecoder.decode(name,"utf-8"); // 单一解码 一次
2. 在AJAX中以?的形式传向目标资源 (*重点*)
1> post / get 方式提交 将参数写在url中 send(null)方法为空 不能够结合Filter过滤器
如: var url="ss.jsp?username=你好";
在JSP里不需设置,

解决中文乱码小结

解决中文乱码小结

在完成控管台的功能中,我遇到了中文乱码问题。

下面是出现乱码的问题以及解决方法,仅供参考。

如有错误之处,请批评指正。

从JSP页面中获取request对象中某一属性的值时,通过控制台输出为乱码。

此值通过js调用,页面输出为中文,无乱码。

则判断request对象获取该值时,出现了乱码。

因为控制台是可以正确输出中文字符的。

在控管台应用中,对于其他的表单提交,由于在web.xml文件中运用了过滤器,所以未出现乱码。

而我得请求是在js里,代码如下:window.location=encodeURI('atmbin.do?action=updateCardBinTable&&name='+name);之所以这种请求出现乱码,是因为表单提交的方式为POST,Tomcat在接到请求后会先交由过滤器处理,故不会出现乱码。

而该提交方式默认为GET方式,过滤器不做处理。

第一种处理方式,是通过String类getBytes(String charsetName)方法,若request对象中属性名为name,代码如下:String name=request.getParameter("name");String name_right= new String(name.getBytes("ISO-8859-1"),"utf-8")System.out.print(name_right);通过测验,控制台会输出为中文,无乱码。

使用"ISO-8859-1"字符集将此name解码,是由于Tomcat 默认编码是ISO-8859-1的。

第二个参数设置为"utf-8",是由于网址路径的编码,用的是utf-8编码。

故此按该方法可解决GET提交方式的乱码。

第二种处理方式,是在Tomcat安装目录下的conf目录下server.xml中,在Connector节点中添加属性URIEncoding="UTF-8",重启Tomcat服务器,即可解决中文乱码。

jsp中文编码乱码的分析与解决

jsp中文编码乱码的分析与解决

jsp中文编码乱码的分析与解决摘要 jsp技术目前普遍应用于网络编程,java在中文处理方面经常出现乱码现象。

本文从分析各种常见的jsp页面中文乱码产生的原因入手,并给出该乱码的解决方案。

经过多次实践,基本可以解决常见jsp页面常见的中文乱码问题,有着很好的广泛性。

关键词网络编程;中文乱码;jsp页面编码中图分类号tp39 文献标识码a 文章编号1674-6708(2011)57-0183-020引言jsp(java server pages)是由sun公司倡导、许多公司参与一起建立的一种动态网页技术标准,jsp技术采用java作为开发脚本语言,java本身有着很好的跨平台性,但是jsp在结合页面技术后,最使人头疼的一个问题就是不能很好的处理中文乱码问题,在开发过程中带来诸多不便,本文从剖析中文乱码产生的各种原因入手,并给出相应的解决方案。

1中文乱码的根源1)中文的编码很多,在不同的情况下可能有多种不同的二进制值;2)在某些应用中传递数据时,可能把中文转换成其它形式;3)在一个应用系统中,编码之间存在各种各样的转换;4)在转换过程中需要制定编码方式;5)在具体实践过程中,可能忽略或忘记设置编码;6)不同的软件环境其编码设置方式不同也容易导致中文乱码;7)编码工具的多样性以及对编码的模糊认识不清。

2常见的jsp页面中文乱码网上常出现的 jsp/servlet encoding 问题一般都表现在browser 或应用程序端,如:浏览器中看到的 jsp/servlet 页面中的汉字怎么都成了‘?’;浏览器中看到的 servlet 页面中的汉字怎么都成了乱码;java 应用程序界面中的汉字怎么都成了方块;jsp/servlet 页面无法显示gbk 汉字;jsp/servlet 不能接收 form 提交的汉字;jsp/servlet 数据库读写无法获得正确的内容。

3 中文乱码产生原因分析1)在jsp中如果指定了,那么在该jsp中所有用到的数据,如果沒有指定编码,那么这些数据的编码方式为a。

JSP出现中文乱码问题解决方法详解

JSP出现中文乱码问题解决方法详解

JSP出现中⽂乱码问题解决⽅法详解在介绍⽅法之前我们⾸先应该清楚具体的问题有哪些,笔者在本博客当中论述的JSP中⽂乱码问题有如下⼏个⽅⾯:页⾯乱码、参数乱码、表单乱码、源⽂件乱码。

下⾯来逐⼀解决其中的乱码问题。

⼀、JSP页⾯中⽂乱码在JSP页⾯中,中⽂显⽰乱码有两种情况:⼀种是HTML中的中⽂乱码,另⼀种是在JSP中动态输出的中⽂乱码。

先看⼀个JSP程序:<%@ page language="java" import="java.util.*" %><html><head><title>中⽂显⽰⽰例</title></head><body>这是⼀个中⽂显⽰⽰例:<%String str = "中⽂";out.print(str);%></body></html>上⾯这个JSP程序看起来好像是在页⾯显⽰⼏句中⽂⽽且标题也是中⽂。

运⾏后在浏览器中显⽰如图所⽰原因在于没有在JSP中指定页⾯显⽰的编码,消除乱码的解决⽅案很简单上⾯代码中page命令修改成如下所⽰即可<%@ page language="java" import="java.util.*" contentType="text/html; charset=GB2312" %><html><head><title>中⽂显⽰⽰例</title></head><body>这是⼀个中⽂显⽰⽰例:<%String str = "中⽂";out.print(str);%></body></html>再次运⾏乱码消失,原理就是向页⾯指定编码为GB2312,那么页⾯就会按照此编码来显⽰,于是乱码消失。

JSP技术中文乱码的原因及解决方法

JSP技术中文乱码的原因及解决方法

JSP 技术中文乱码的原因及解决方法杨金花(西安铁路职业技术学院陕西西安710014)摘要:JSP 技术广泛应用于动态网页制作,但在应用中文字符时常常出现乱码。

以前有关JSP 技术中文乱码的研究,只是侧重于对常见的几种中文乱码情况分析,并从网页代码方面进行研究,然后给出相应的代码,缺少对造成中文乱码原因的研究。

本文从造成乱码的根本原因入手进行分析,以JSP 技术工作过程为线索,提出新的研究思路:从开发Java 程序时所涉及的开发环境以及使用的开发工具着手,研究字符的存储与编码的关系,将影响Java 中字符编码的原因分为内因和外因。

研究结果表明,在使用JSP 技术的过程中,中文字符的编码不仅在JSP 工作过程中,会发生编码的转换,而且会因开发环境以及使用开发工具不同,使存储在内存的编码形式发生转换,每种编码之间的转换没有规律。

本文系统地分析了Java 中字符编码的转换,最后针对JSP 中常见的中文乱码情况,给出了相应的解决方法。

关键词:字符编码;中文乱码;JSP 技术;Servlet 中图分类号:TP311文献标识码:A文章编号:1674-6236(2011)01-0025-03The reason and solution of Chinese garbled code in JSP technologyYANG Jin -hua(Xi ’an Railway Vocational Technical College ,Xi ’an 710014,China )Abstract:JSP technology is widely used in the production of dynamic web pages ,but the chinese characters in its application often garbled.Chinese garbled before the JSP technology research ,is focused on several common chinese garbled on the situation analysis ,and researches aspects of the code from the page ,and then gives the corresponding code ,the lack of research into the reasons causes the chinese garbled.This paper analyses from the real causes of the underlying cause garbled.JSP technology researches to the work process for the clues ,puts forward new research ideas :the development of Java programs involved in the development environment and start using the development tools ,storage and encoding of character relationships ,affecting the character encoding in Java is divided into internal and external reasons.The results show that use of JSP technology in the process ,the chinese character code in the JSP course of their work not only will happen coding of the convert ,but also because of development environment ,and use the development tools ,the code stored in memory in different forms.Between each code conversion is not the law.This paper systematically analysed the Java character encoding conversion ,in the end for the JSP common situation in the chinese garbled ,the corresponding solution was given.Key words:character encoding ;chinese garbled ;JSP technology ;ServletJSP ,也就是Java Server Page (Java 服务器网页),是目前市场上主流的分布式应用程序开发平台。

JSP中文乱码问题完全解决方案

JSP中文乱码问题完全解决方案
if (this.enable) {
request.setCharacterEncoding(this.encodingName);
}
chain.doFilter(request, response);
}
public void destroy() {
} else {
this.enable = false;
}
}
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
四. 数据库操作中文乱码
在建立数据库的时候,应该选择支持中文的编码格式,最好能和JSP页面的编码格式保持一致,这样就可以尽可能减少数据库操作的中文乱码问题。同时在JDBC连接数据库的时候可以使用类似下面这种形式的URL。jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs;useUnicode=true;characterEncoding=gb2312
import javax.servlet.UnavailableException;
public class SetCharacterEncodingFilter implements Filter {
protected FilterConfig filterConfig;
protected String encodingName;
}
}
在web.xml中添加过滤器的配置如下:
<filter>

中文乱码问题解决方法

中文乱码问题解决方法

在Jsp文件问题时,中文乱码现象经常遇到,现将处理方法总结一下,供大家参考:(在各种编码方案中,UTF-8、GBK、GB2312都是支持中文显示的。

只是GBK比GB2312支持跟多的字符)一、JSP页面显示乱码Jsp文件页面显示乱码,这种情况比较好处理,在页面的Page指令加上如下一项就OK了:<%@ page contentType="text/html; charset=gb2312"%>注:如果是HTML页面显示乱码,则加上:<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 二、URL传递参数中文乱码当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法一如下:在参数传递时对参数编码,比如RearshRes.jsp?keywords=" + .URLEncoder.encode(keywords) 然后在接收参数页面使用如下语句接收keywords=newString(request.getParameter("keywords").getBytes("ISO-8859-1"),"UTF-8") ;解决方法二:修改tomcat的server.xml文件中URIEncoding。

<Connectordebug="0"acceptCount="100"connectionTimeout="20000"disableUploadTimeout="true"port="80"redirectPort="8443"enableLookups="false"minSpareThreads="25"maxSpareThreads="75"maxThreads="150"maxPostSize="0"URIEncoding="GBK"></Connector>这个方法主要针对从url中获取字符串的问题。

JSP中文乱码的产生原因及解决方案

JSP中文乱码的产生原因及解决方案

JSP中文乱码的产生原因及解决方案在JSP的开发过程中,经常出现中文乱码的问题,可能一直困扰着大家,现在把JSP 开发中遇到的中文乱码的问题及解决办法写出来供大家参考。

首先需要了解一下Java中文问题的由来:Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。

原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。

首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。

基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312或-ecoding UTF-8编译;对于JSP,在文件头加上<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解决这类乱码问题。

下面是一些常见中文乱码问题的解决方法(下面例子中ecoding采用的是gb2312,也可设为ecoding GBK或ecoding UTF-8):一、JSP页面乱码这种乱码问题比较简单,一般是页面编码不一致导致的乱码,一般新手容易出现这样的问题,具体分以下两种情况:➢未指定使用字符集编码下面的显示页面(display.jsp)就出现乱码:<html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html charset=gb2312"> </head><body><%out.print("JSP的中文处理");%></body>这种乱码的原因是没有在页面里指定使用的字符集编码,JSP页面中出现了中文字符,而默认的ISO-8859-1字符集中无中文字符,解决方法:只要在页面开始地方用下面代码指定字符集编码即可,在JSP页面中指定编码方式(gb2312),和浏览器解码方式设置相同,即在页面的第一行加上:<%@ page contentType="text/html; charset=gb2312"%>,就可以消除乱码了。

jsp中文传参乱码问题

jsp中文传参乱码问题

String title= request.getParameter("title");
title= new String( title.getBytes("iso-8859-1"), "UTF-8");
System.out.println(title);
}
二、为编码为UTF-8的JSP页面传参,对于中文乱码的解决分为两种情况:
1.通过GET方式传参,通过new String(request.getParameter("").getBytes("ISO-8859-1"),"UTF-8"); 的方式转换为需要的编码,如UTF-8等。
一、在请求页面的请求参数需要用encodeURI进行转码,然后在接收请求的页面需要进行字符集转换。
本例中的请求和接收页面的字符集都是UTF-8:
1.请求的JSP页面用JavaScript的encodeURI()方法将参数转码:
function toView(param){
var encodeparam = encodeURI(param) ;
window.location.href="/naias/advAna_form.do?method=showDetail&title="+encodepara进行字符集转换:
public ActionForward excute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

jsp页面显示中文乱码:jsp页面的编码方式有两个地方需要设置:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ page contentType="text/html;charset=utf-8"%>其中:pageEncoding 指的是jsp文件本身在本地保存时的编码方式。

contentType的charset 是指服务器发送网页内容给客户端时所使用的编码。

从第一次访问一个jsp页面开始,到这个页面被发送到客户端,这个Jsp页面要经过三次编码转换:第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。

第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。

JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。

第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效所以最终的解决方法为:在jsp页面设置pageEncoding或者contentType的其中一个为支持中文的编码格式(如utf-8,gbk,gb2312)。

因为设置一个的话,另一个默认会和它一样。

如果两个都设置的话,必须保证两个都是支持中文编码(不一定要一样)。

最佳建议设置如下:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ page contentType="text/html;charset=utf-8"%>2. post方式传值乱码:由于post方式传值是通过request存储的,在另一个页面也是通过request.getParameter(String name)来提取信息,所以这种情况下的乱码主要是因为request存储信息的编码设置导致的。

post提交时,如果没有设置提交的编码格式,则会以iso8859-1方式进行提交,接受的jsp 却以utf-8的方式接受。

所以使用如下语句即可得到单个正确的中文字符串:String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;解决方法:在接收页面设置request.setCharacterEncoding("UTF-8")。

最好通过过滤器实现每个页面都设置为request.setCharacterEncoding("UTF-8")。

3. get方式传值乱码:get方式传值有两种,一种是表单get传值,另一种是url地址传值(实质上这两种方式都是通过url参数的方式传值)。

表单方式get传值:表单方式get传值的编码过程为,首先浏览器根据页面的charset编码方式对传值进行编码,然后提交至服务器交给tomcat,tomcat对这些信息进行解码时,采用的解码方式是由server.xml文件中的URIEncoding设置决定的,也就是说,当我们使用命令request.getParameter("")获取表单参数值时,得到的字符串,经过了charset的编码和URIEncoding的解码。

由上所知,只要charset的编码和URIEncoding的解码一致,并且支持中文,就能保证没有乱码。

设置URIEncoding的方法如下:方法一:修改$TOMCAT/conf/server.xml文件,在HTTP Connector或者AJP Connector的配置加上URIEncoding="gbk"<... maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="gbk" />方法二:使用useBodyEncodingForURI="true". 这个方法适合你的TOMCAT实例下需要跑多个不同Encoding的程序时。

<... maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" />enableLookups="false" redirectPort="8443" protocol="AJP/1.3" useBodyEncodingForURI="true" />在Tomcat配置中,连接器(HTTP Connector)属性中有一个URIEncoding和useBodyEncodingForURI属性,这两个属性设置对URL后的附加参数进行URL解码时该如何选择字符集编码。

URIEncoding用于制定URL后的附加参数的字符集编码,useBodyEncodingForURI 则说明是否采用实体内容的字符集编码设置来替代URIEncoding的设置,也就是说当useBodyEncodingForURI属性设置为true时ServletRequest.setCharacterEncoding方法设置的字符集编码也影响getParameter等方法对URL地址后的参数进行URL解码的结果。

(在/%TomCat_Home%/ conf\server.xml文件中找到<Connector>标记,然后在后面加上useBodyEncodingForURI=true)url方式get传值乱码:于这种方式,浏览器不会采用页面的charset方式对URL中的中文进行编码后提交至服务器(IE,FireFox都一样),而是采用系统的GBK转码为ISO-8859-1之后提交至服务器tomcat,所以这个过程为:首先,url地址中的中文被从gbk转换成ISO-8859-1,交给tomcat后,又被tomcat根据URLEcoding解码,这种情况,只有把URLEcoding设置为gbk才能在request.getParameter("")时不出现乱码。

但是这样就会影响到上面的配置,所以一个好的解决方法是,使用.URLEcoder和URLDecoder对地址中的中文进行手动编码和解码。

所以一个万全的解决方法为:1.所有页面的charset设置为UTF-8。

2.Tomcat的URIEncoding默认是ISO-8859-1,而我设置为UTF-8,主要是想解决中文命名的文件以及请求以get方式提交有可能出现的乱码问题。

3.添加过滤器,调用request.setCharacterEncoding("utf-8")方法将request的字符集设定为utf-8,解决请求以post方式提交的乱码问题。

4. url地址中存在中文参数时,首先对中文参数使用URLEcoder编码为utf-8,然后在request.getParameter("")接收到参数后再使用URLDecoder还原。

例如:From.jsp页面:<%String username = "张某某" ;username = URLEncoder.encode(username,"utf-8");%><a href="to.jsp?param=<%=username %>">转入</a>To.jsp页面<%=URLDecoder.decode(request.getParameter("param"),"utf-8")%>。

相关文档
最新文档