JSP乱码解决大全.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:3 大小:24KB 金币:14 举报 版权申诉
预览加载中,请您耐心等待几秒...

JSP乱码解决大全.doc

JSP乱码解决大全.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

14 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

JSP乱码解决大全其中有字符编码转换的地方有:a.JSP编译。Java应用服务器将根据JVM的file.encoding值读取JSP源文件,并转换为内部字符编码进行JSP编译,生成JAVA源文件,根据file.encoding值写回文件系统。如果当前系统语言支持GBK,那么这时候不会出现encoding问题。如果是英文的系统,LANG是en_US的Linux,如AIX或Solaris,则要将JVM的file.encoding值置成GBK。系统语言如果是GB2312,则根据需要,确定要不要设置file.encoding,将file.encoding设为GBK可以解决潜在的GBK字符乱码问题b.Java需要被编译为.class才能在JVM中执行,这个过程存在与a.同样的file.encoding问题。从这里开始servlet和jsp的运行就类似了,只不过Servlet的编译不是自动进行的。c.Servlet需要将HTML页面内容转换为browser可接受的encoding内容发送出去。依赖于各JAVAAppServer的实现方式,有的将查询Browser的accept-charset和accept-language参数或以其它猜的方式确定encoding值,有的则不管。因此constant-encoding也许是最好的解决方法。对于中文网页,可在JSP或Servlet中设置contentType="text/html;charset=GB2312";如果页面中有GBK字符,则设置为contentType="text/html;charset=GBK",由于IE和Netscape对GBK的支持程度不一样,作这种设置时需要测试一下。因为16位JAVAchar在网络传送时高8位会被丢弃,也为了确保Servlet页面中的汉字(包括内嵌的和servlet运行过程中得到的)是期望的内码,可以用PrintWriterout=res.getWriter()取代ServletOutputStreamout=res.getOutputStream(),PrinterWriter将根据contentType中指定的charset作转换(ContentType需在此之前指定!);也可以用OutputStreamWriter封装ServletOutputStream类并用write(String)输出汉字字符串。对于JSP,JAVAApplicationServer应当能够确保在这个阶段将嵌入的汉字正确传送出去。d.这是URL字符encoding问题。如果通过get/post方式从browser返回的值中包含汉字信息,servlet将无法得到正确的值。SUN的J2SDK中,HttpUtils.parseName在解析参数时根本没有考虑browser的语言设置,而是将得到的值按byte方式解析。这是网上讨论得最多的encoding问题。因为这是设计缺陷,只能以bin方式重新解析得到的字符串;或者以hackHttpUtils类的方式解决。参考文章2、均有介绍,3不过最好将其中的中文encodingGB2312、CP1381都改为GBK,否则遇到GBK汉字时,还是会有问题。ServletAPI2.3提供一个新的函数HttpServeletRequest.setCharacterEncoding用于在调用request.getParameter(“param_name”)前指定应用程序希望的encoding,这将有助于彻底解决这个问题。关于jsp乱码问题的解决。1最基本的乱码问题。这个乱码问题是最简单的乱码问题。一般新会出现。就是页面编码不一致导致的乱码。<%@pagelanguage="java"pageEncoding="UTF-8"%><%@pagecontentType="text/html;charset=iso8859-1"%><html><head><title>中文问题</title><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"></head></head><body>我是个好人</body>三个地方的编码。第一个地方的编码格式为jsp文件的存储格式。Eclipse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。第二处编码为解码格式。因为存为UTF-8的文件被解码为iso8859-1