有关JSP中中文乱码的问题

     JSP页面中包含中文乱码的问题大致可分为三方面,即客户端、服务器端和数据库。

导致此问题的原因可能有以下两点:

  首先Java(包括JSP)源文件中很可能包含有中文;

第二类乱码,即Java程序与其他存储媒介交互时产生的乱码。很多存储媒介,如数据

库,文件,流等的存储方式都是基于字节流的,Java程序与这些媒介交互时就会发生

字符(char)与字节(byte)之间的转换,如果在转换过程中使用的编码方式与字节原有的编码不一致,即编码和解码无法一一匹配,就很可能出现乱码。

   通过最近收集的资料和老师的讲解,将此问题的解决方法分为以下的几点。

   客户端:

1.输入的解码

1)当客户端(一般是浏览器)接收服务器发回的响应(HTML页面)后,对其进行解码,此时若出现乱码则可以在浏览器的查看中强制设置编码方式为GBK或者GB1312

2)在头文件中定义编码类型,response.setContentType("text/html; charset=GBK")或者前端html代码中的”meta content”(i.e. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />)

2.输出的编码

1URL编码

 a.  IE/FF在参数部分使用本机编码,GBKos默认)

 b.参数的前面部分,FFGBKos默认,IE中可在IE选项中的高级里设置使用utf-8发送URL

2post的编码(提交Form表单数据)

前端html代码中的”meta content”(i.e. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />)

 

服务器:

1.输入的解码

1)通过post提交时,JSP转换成java代码时,有的服务器默认是ISO-8859-1

一旦有中文则会出现乱码,解决方法是在JSP编码的地方设置<%@ page contentType="text/html;charset=GBK>,或者request.setCharacterEncoding("GBK")方法

(2)URL encode

对字符串进行强制转码 ,对含有汉字字符的信息进行处理

new String(request.getParameter("name").getBytes("iso-8859-1"),"GBK")

或者在tomacat中进行配置,在server.xml文件中

<Connector port="8080" protocol="HTTP/1.1" maxThreads="150"connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK"/>

2.输出的编码

tomacat来举例,我不知道如果在它的xml文件下设置URIEncoding="GBK",是否仅仅是设置了解码的方式为中文。按我的理解,tomacat在设置编码方式的时候并不是将解码和编码严格的划分开来,但是它在解码的同时是否也一并设置了输出编码的方式,仍然不是十分清楚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值