关于jsp乱码问题的解决。
1 最基本的乱码问题。
这个乱码问题是最简单的乱码问题。一般新会出现。就是页面编码不一致导致的乱码。
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=iso8859-1"%>
<html>
<head>
<title>中文问题</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
</head>
<body>
我是个好人
</body>
三个地方的编码。
第一个地方的编码格式为jsp文件的存储格式。Eclipse会根据这个编码格式保存文件。并编译jsp文件
,包括里面的汉字。
第二处编码为解码格式。因为存为UTF-8的文件被解码为iso8859-1,这样 如有中文肯定出乱码。也就
是必须一致。而第二处所在的这一行,可以没有。缺省也是使用iso8859-1的编码格式。所以如果没有
这一行的话,“我是个好人”也会出现乱码。必须一致才可以。
第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式没有关系
。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致
浏览器混淆了编码格式。出现了乱码。
2 表单使用Post方式提交后接收到的乱码问题
这个问题也是一个常见的问题。这个乱码也是tomcat的内部编码格式iso8859-1在捣乱,也就是说post
提交时,如果没有设置提交的编码格式,则会以iso8859-1方式进行提交,接受的jsp却以utf-8的方式
接受。导致乱码。既然这样的原因,下面有几种解决方式,并比较。
A 接受参数时进行编码转换
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8")
; 这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。
B 在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8"),把提交内
容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。直接使用
String str = request.getParameter("something");即可得到汉字参数。但每页都需要执行这句话。
这个方法也就对post提交的有效果,对于get提交和上传文件时的enctype="multipart/form-data"是无
效的。稍后下面单独对这个两个的乱码情况再进行说明。
C 为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp
进行编码处理。这个网上有很多例子。请大家自己查阅。
3 表单get提交方式的乱码处理方式。
如果使用get方式提交中文,接受参数的页面也会出现乱码,这个乱码的原因也是tomcat的内部编码格
式iso8859-1导致。Tomcat会以get的缺省编码方式iso8859-1对汉字进行编码,编码后追加到url,导致
接受页面得到的参数为乱码/、。
解决办法:
A 使用上例中的第一种方式,对接受到的字符进行解码,再转码。
B Get走的是url提交,而在进入url之前已经进行了iso8859-1的编码处理。要想影响这个编码则需要在
server.xml的Connector节点增加useBodyEncodingForURI="true"
属性配置,即可控制tomcat对get方式的汉字编码方式,上面这个属性控制get提交也是用
request.setCharacterEncoding("UTF-8")所设置的编码格式进行编码。所以自动编码为utf-8,接受页
面正常接受就可以了。但我认为真正的编码过程是,tomcat又要根据
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true" URIEncoding="UTF-8"/>
里面所设置的URIEncoding=”UTF-8”再进行一次编码,但是由于已经编码为utf-8,再编码也不会有变
化了。如果是从url获取编码,接受页面则是根据URIEncoding=”UTF-8”来进行解码的。
4 上传文件时的乱码解决
上传文件时,form表单设置的都是enctype="multipart/form-data"。这种方式以流方式提交文件。
如果使用apach的上传组件,会发现有很多乱码想象。这是因为apach的先期commons-fileupload.jar有
bug,取出汉字后进行解码,因为这种方式提交,编码又自动使用的是tomcat缺省编码格式iso-8859-1
。但出现的乱码问题是: 句号,逗号,等特殊符号变成了乱码,汉字如果数量为奇数,则会出现乱码
,偶数则解析正常。
解决方式: 下载commons-fileupload-1.1.1.jar 这个版本的jar已经解决了这些bug。
但是取出内容时仍然需要对取出的字符进行从iso8859-1到utf-8转码。已经能得到正常所有汉字以及字
符。
5 Java代码关于url请求,接受参数的乱码
url的编码格式,取决于上面所说的URIEncoding=”UTF-8”。 如果设定了这个编码格式,则意味着所
有到url的汉字参数,都必须进行编码才可以。否则得到的汉字参数值都是乱码,例如
一个链接 Response.sendDerect(“/a.jsp?name=张大维”);而在a.jsp里面直接使用
String name=request.getParameter("name")");得到的就是乱码。因为规定了必须是utf-8才可以,所以,这个转向应该这样写:
Response.sendDerect(“/a.jsp?name=URLEncode.encode(“张大维”,”utf-8”);才可以。
如果不设置这个参数URIEncoding=”UTF-8”, 会怎么样呢? 不设置则就使用了缺省的编码格式
iso8859-1。问题又出来了,第一就是参数值的个数如果是奇数个数,则就可以正常解析,如果使偶数
个数,得到最后字符就是乱码。还有就是如果最后一个字符如果是英文,则就能正常解析,但中文的标
点符号仍出现乱码。权宜之计,如果您的参数中没有中文标点符号,则可以在参数值最后加一个英文符
号来解决乱码问题,得到参数后再去掉这个最后面的符号。也可以凑或使用。
6 脚本代码关于url请求,接受到的参数乱码
脚本中也会进行页面转向的控制,也会涉及到附带参数,并在接受页面解析这个参数的情况。如果这个
汉字参数不进行URIEncoding=”UTF-8”所指定的编码处理,则接受页面接受到的汉字也是乱码。脚本
处理编码比较麻烦,必须有相应的编码脚本对应文件,然后调用脚本中的方法对汉字进行编码即可。
7 关于jsp在MyEclipse中打开的乱码问题
对于一个已经存在的项目,Jsp文件的存储格式可能是utf-8。如果新安装的eclipse,则缺省打开使用
的编码格式都是iso8859-1。所以导致jsp里面的汉字出现乱码。这个乱码比较容易解决,直接到
eclipse3.1的偏好设置里面找到general-〉edidor,设置为您的文件打开编码为utf-8即可。Eclipse会
自动重新以新的编码格式打开。汉字即可正常显示。
8 关于html页面在eclipse中打开出现乱码情况
由于大部分页面都是由dreamweaver制作,其存储格式跟eclipse的识别有差别导致。
一般这种情况,在eclipse中新建一个jsp,直接从dreamweaver复制页面内容粘贴到jsp即可
转载于:https://my.oschina.net/u/1266623/blog/475944
分享到:
相关推荐
### Java与JSP文件乱码问题综合解析 在软件开发过程中,尤其是涉及到国际化或中文处理时,文件编码问题常导致“乱码”现象,严重影响了程序的正常运行和用户体验。本文将深入探讨Java与JSP文件乱码的问题,提供一...
Java开发乱码问题解决方法汇总 Java开发中乱码问题是非常常见的问题之一,而解决这些问题需要具备一定的技术知识和经验。在本文中,我们将总结一些常见的Java开发乱码问题解决方法,希望能够为读者提供帮助。 1. ...
JSP/HTML页面乱码 确保JSP或HTML页面头部声明的字符集为UTF-8,例如在`<head>`标签中添加`; charset=UTF-8">`。此外,也可以通过`page`指令来设置JSP页面的字符编码,例如`; charset=UTF-8" pageEncoding="UTF-8"%...
【Ajax乱码问题详解】 在Web开发中,Ajax(异步JavaScript和XML)技术被广泛应用于实现页面的无刷新更新,然而,与之相伴的一个常见问题是字符编码导致的乱码现象。本文将深入探讨Ajax乱码问题的成因及其解决方案。...
对于JSP和JDBC的MySQL乱码问题,JSP的默认请求编码是ISO8859_1,处理中文时需要将其转换为GBK。示例代码如下: ```java String str = new String(request.getParameter("name").getBytes("ISO8859-1"), "GBK"); out...
1. **乱码问题**:在导出Excel时,文件名或内容可能出现乱码。解决方法是确保设置正确的字符编码,例如设置`response.setCharacterEncoding("UTF-8")`,并指定文件名的编码,如`response.setHeader("Content-...
6. **问题解决**:讨论了中文乱码问题和其他常见问题,这些问题在开发过程中可能会遇到,需要针对性地解决。 7. **总结**:论文最后总结了已经实现的功能,如系统的核心操作,同时也列出了待完善的部分,如可能存在...
### JSP开发教程和源码知识点汇总 #### 一、JSP基础知识 - **JSP简介**:JSP(JavaServer Pages)是一种基于Java技术的Web开发标准,它结合了HTML标记、脚本语言(如JavaScript)以及Java编程语言来创建动态网页。...
再者,系统提供查询和汇总功能,以便快速查找特定信息并进行数据分析。此外,系统还有库存余存查询和缺货预警,帮助管理员提前规划采购。 在数据结构部分,系统包含用户登录信息、物品基本信息和出入记录等关键数据...
1. **JSP页面中文显示乱码** 当浏览器访问JSP页面时,如果页面内容编码与浏览器解析的编码不一致,就会出现乱码。解决方法是在JSP页面顶部添加`<%@pageEncoding="utf-8"%>`指令,确保页面以UTF-8编码。 2. **...
因此,针对JFreeChart中的中文乱码问题,本文将汇总并整理一系列有效的解决方案。 #### JFreeChart简介 JFreeChart是一款开源Java图表库,它提供了丰富的API来创建高质量的图表。JFreeChart支持多种类型的图表,...
request获取中文参数时可能出现乱码问题,需设置正确的编码。 8. **请求(request)生命周期与作用范围** - 请求开始到响应返回,只在当前请求范围内有效,服务器跳转也视为一次新的请求。 9. **响应对象...
在IT领域,编码和乱码问题常常困扰着开发者,尤其是涉及到多语言支持或者跨平台交互时。本文将针对Java、PHP以及HTML这三种常见的编程语言,深入探讨它们在处理文件编码与乱码问题上的方法。 首先,对于PHP,乱码...
JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,...如果你遇到的特定问题仍未解决,可以搜索相关的解决方案,或者参考社区中的帖子,如文中提到的博客文章,那里通常会汇总各种场景下的解决方案。
2.8.2 访问JSP页面出现乱码 2.8.3 在JSP页面中使用Include指令后,JSP不能编译 2.9 精彩回顾 第3章前人栽树后人乘凉 ——、JSP内置对象 3.1 本章学习任务 3.1.1 本章知识体系 3.1.2 实例开发任务 3.2 简化开发JSP...
在配置 Tomcat 时,我们需要修改 server.xml 文件,添加 URIEncoding="UTF-8" 配置,以便解决中文乱码问题。同时,我们还需要添加一个 init 参数,用于指定文件编码。 5. 启动服务 启动服务时,我们需要先启动 ...
当JSP与Flex交互时出现乱码,可以确保JSP正确设置字符编码,例如使用`request.getParameter("name").getBytes("ISO8859-1")`,然后转码为`utf-8`。 10. **DataGrid多选**: 要实现DataGrid的多选功能,可以通过...
Tomcat 是一个广泛使用的开源应用服务器,主要用于部署和运行Java Servlet和JavaServer Pages(JSP)应用程序。在本文中,我们将深入探讨Tomcat的一些常见问题和配置信息。 首先,我们来解决浏览器GET请求中文乱码...
9. **乱码问题**:当你遇到后台(例如JSP)传回Flex的数据出现乱码时,可能需要确保请求参数使用正确的编码,例如`request.getParameter("name").getBytes("ISO8859-1")`转成`utf-8`,或者设置`request.setCharacter...
20. 防止乱码:在JSP页面中,可以通过设置contentType属性来指定字符编码;在Servlet中,可以使用request.setCharacterEncoding()方法来设定请求的字符编码。 21. 数据库操作中的乱码:在存储和检索含中文的数据时...