`
wx1569618008
  • 浏览: 75296 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

jsp乱码汇总

 
阅读更多

关于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与JSP文件乱码的问题,提供一...

    Java开发乱码问题解决方法汇总

    Java开发乱码问题解决方法汇总 Java开发中乱码问题是非常常见的问题之一,而解决这些问题需要具备一定的技术知识和经验。在本文中,我们将总结一些常见的Java开发乱码问题解决方法,希望能够为读者提供帮助。 1. ...

    java web 开发乱码汇总

    JSP/HTML页面乱码 确保JSP或HTML页面头部声明的字符集为UTF-8,例如在`&lt;head&gt;`标签中添加`; charset=UTF-8"&gt;`。此外,也可以通过`page`指令来设置JSP页面的字符编码,例如`; charset=UTF-8" pageEncoding="UTF-8"%...

    ajax乱码解决汇总

    【Ajax乱码问题详解】 在Web开发中,Ajax(异步JavaScript和XML)技术被广泛应用于实现页面的无刷新更新,然而,与之相伴的一个常见问题是字符编码导致的乱码现象。本文将深入探讨Ajax乱码问题的成因及其解决方案。...

    中文乱码处理汇总.docx

    对于JSP和JDBC的MySQL乱码问题,JSP的默认请求编码是ISO8859_1,处理中文时需要将其转换为GBK。示例代码如下: ```java String str = new String(request.getParameter("name").getBytes("ISO8859-1"), "GBK"); out...

    jsp导出excel一般问题及汇总

    1. **乱码问题**:在导出Excel时,文件名或内容可能出现乱码。解决方法是确保设置正确的字符编码,例如设置`response.setCharacterEncoding("UTF-8")`,并指定文件名的编码,如`response.setHeader("Content-...

    JSP库存管理毕业设计论文

    6. **问题解决**:讨论了中文乱码问题和其他常见问题,这些问题在开发过程中可能会遇到,需要针对性地解决。 7. **总结**:论文最后总结了已经实现的功能,如系统的核心操作,同时也列出了待完善的部分,如可能存在...

    JSP开发教程和源码收藏

    ### JSP开发教程和源码知识点汇总 #### 一、JSP基础知识 - **JSP简介**:JSP(JavaServer Pages)是一种基于Java技术的Web开发标准,它结合了HTML标记、脚本语言(如JavaScript)以及Java编程语言来创建动态网页。...

    JSP+MYSQL 库存管理系统

    再者,系统提供查询和汇总功能,以便快速查找特定信息并进行数据分析。此外,系统还有库存余存查询和缺货预警,帮助管理员提前规划采购。 在数据结构部分,系统包含用户登录信息、物品基本信息和出入记录等关键数据...

    Java Web开发项目中中文乱码解决方法汇总

    1. **JSP页面中文显示乱码** 当浏览器访问JSP页面时,如果页面内容编码与浏览器解析的编码不一致,就会出现乱码。解决方法是在JSP页面顶部添加`&lt;%@pageEncoding="utf-8"%&gt;`指令,确保页面以UTF-8编码。 2. **...

    解决jfreechart中文乱码方案整理.doc

    因此,针对JFreeChart中的中文乱码问题,本文将汇总并整理一系列有效的解决方案。 #### JFreeChart简介 JFreeChart是一款开源Java图表库,它提供了丰富的API来创建高质量的图表。JFreeChart支持多种类型的图表,...

    JSP期末复习考点.docx

    request获取中文参数时可能出现乱码问题,需设置正确的编码。 8. **请求(request)生命周期与作用范围** - 请求开始到响应返回,只在当前请求范围内有效,服务器跳转也视为一次新的请求。 9. **响应对象...

    解析关于java,php以及html的所有文件编码与乱码的处理方法汇总

    在IT领域,编码和乱码问题常常困扰着开发者,尤其是涉及到多语言支持或者跨平台交互时。本文将针对Java、PHP以及HTML这三种常见的编程语言,深入探讨它们在处理文件编码与乱码问题上的方法。 首先,对于PHP,乱码...

    JFreeChart乱码解决.doc

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,...如果你遇到的特定问题仍未解决,可以搜索相关的解决方案,或者参考社区中的帖子,如文中提到的博客文章,那里通常会汇总各种场景下的解决方案。

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    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...

    部署汇总系统步骤111

    在配置 Tomcat 时,我们需要修改 server.xml 文件,添加 URIEncoding="UTF-8" 配置,以便解决中文乱码问题。同时,我们还需要添加一个 init 参数,用于指定文件编码。 5. 启动服务 启动服务时,我们需要先启动 ...

    FLEX问题总汇 (总结篇)

    当JSP与Flex交互时出现乱码,可以确保JSP正确设置字符编码,例如使用`request.getParameter("name").getBytes("ISO8859-1")`,然后转码为`utf-8`。 10. **DataGrid多选**: 要实现DataGrid的多选功能,可以通过...

    tomcat汇总整理.doc

    Tomcat 是一个广泛使用的开源应用服务器,主要用于部署和运行Java Servlet和JavaServer Pages(JSP)应用程序。在本文中,我们将深入探讨Tomcat的一些常见问题和配置信息。 首先,我们来解决浏览器GET请求中文乱码...

    FLEX常见问题总汇

    9. **乱码问题**:当你遇到后台(例如JSP)传回Flex的数据出现乱码时,可能需要确保请求参数使用正确的编码,例如`request.getParameter("name").getBytes("ISO8859-1")`转成`utf-8`,或者设置`request.setCharacter...

    答辩常见问题汇总1.pdf

    20. 防止乱码:在JSP页面中,可以通过设置contentType属性来指定字符编码;在Servlet中,可以使用request.setCharacterEncoding()方法来设定请求的字符编码。 21. 数据库操作中的乱码:在存储和检索含中文的数据时...

Global site tag (gtag.js) - Google Analytics