- 浏览: 119027 次
- 性别:
- 来自: 济南
文章分类
最新评论
http://hi.baidu.com/hexcode/blog/item/693756f84ff89a50242df272.html
关键字: 页面传值 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方式进行提交,(tomcat默认编码: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.getParamet("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”来进行解码的。
关键字: 页面传值 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方式进行提交,(tomcat默认编码: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.getParamet("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”来进行解码的。
发表评论
-
二维码
2017-07-13 16:54 428使用jquery.qrcode生成二维码 http:// ... -
servlet的url-pattern匹配规则详细描述
2017-06-20 14:06 469http://www.cnblogs.com/51kata/p ... -
Spring com.sun.proxy.$Proxy6 cannot be cast to
2017-06-16 17:08 660转载:http://blog.csdn.net/psp000 ... -
Java中getResourceAsStream的用法
2017-05-16 15:48 327转载:http://riddickbryant.iteye. ... -
log4j的使用详细解析
2017-05-15 16:50 454http://www.jb51.net/article/4 ... -
log4jdbc记录全部SQL日志
2017-05-15 15:52 421转载:http://www.cnblogs.com/xdp- ... -
BufferedInputStream如何缓冲IO以及InputStream中的read(byte[] b) 是否具有缓冲功能?
2017-04-09 17:17 322装载: http://blog.csdn.ne ... -
常见面试题
2017-03-07 11:23 358hashCode()和equals()方法的作用。 htt ... -
Java多线程之this与Thread.currentThread()的区别——java多线程编程核心技术
2017-02-08 15:12 314http://www.cnblogs.com/huangyic ... -
class getClass()
2016-12-27 16:13 394http://www.cnblogs.com/feiyun1 ... -
认真学spring官网,很容易找到spring4的jar包下载位置
2016-12-26 13:12 485http://yanln.iteye.com/blog/219 ... -
spring 下载方法
2016-10-23 15:16 0http://www.cnblogs.com/yjmyzz/ ... -
快速排序
2016-10-11 19:47 0http://www.cnblogs.com/vanezk ... -
java中为什么byte的取值范围是-128到+127
2016-09-30 16:21 609java中为什么byte的取值范围是-128到+12 ... -
java io
2016-08-31 17:48 295先看一下 InputStream 部分子类的关系。 ... -
JAVA String
2016-08-25 08:47 326转载http://blog.sina.com.cn/s/b ... -
java 异常相关文章
2016-08-23 18:26 328http://blog.csdn.net/beidou321 ... -
Spring框架下的单元测试方法
2015-10-29 14:08 432转载:http://blog.csdn.net/bruce ... -
mybatis
2015-10-23 17:31 0转载 http://my.oschina.net/u/14 ... -
Lucene源码解析--Field类
2015-07-09 15:08 539转载http://blog.itpub.net/2 ...
相关推荐
需要检查整个流程中的所有编码设置是否一致。 - **多浏览器兼容性**:不同的浏览器对于字符编码的处理方式可能存在差异,因此在开发过程中需要测试多种浏览器,确保在所有目标用户使用的浏览器上都能正常显示。 ###...
上述代码展示了如何在JSP中处理文件上传的基本流程。通过引入Apache Commons FileUpload库,我们可以方便地解析多部分请求,检查文件大小,并将文件保存到服务器。 7. **安全注意事项** - 验证文件类型:确保只...
- JSP文件通过`<%@ page %>`指令来设置页面属性,如内容类型、字符编码、导入的Java类等。 - `<% ... %>`是脚本元素,用于在JSP页面中插入Java代码块。 - `<%= ... %>`是表达式元素,它会将Java表达式的值转换为...
**JSP编码与乱码问题详解** 在JSP(JavaServer Pages)开发中,编码问题是一个常见的困扰,尤其是在处理中文字符时。本文将深入探讨JSP编程过程中出现的乱码问题,包括原因分析和解决方案。 1. **基本的乱码问题**...
Servlet和JSP是Java Web开发中的核心技术,它们与Tomcat服务器紧密相连,共同构成了Web应用程序的基础。本篇文章将深入探讨这三个关键概念,并介绍如何利用它们进行基于Tomcat的Web开发。 **Servlet概述** Servlet...
动作如`<jsp:include>`、`<jsp:forward>`则用于页面控制流程。 2. **JSP生命周期** JSP页面经历三个主要阶段:翻译阶段、编译阶段和执行阶段。在翻译阶段,JSP被转换成Servlet源码;编译阶段,Servlet源码被编译成...
《JSP应用开发详解》这本书是面向Web开发者的一本经典教程,主要涵盖了使用Java Server Pages (JSP) 技术进行动态网站开发的各种核心概念和技术。该书的随书代码包含了一系列实例,帮助读者深入理解并实践JSP编程。...
**JSP中文手册详解** JavaServer Pages(JSP)是一种基于Java的技术,用于创建动态、交互式的Web应用程序。它将内容的生成与显示分离,提高了开发效率和维护性。本篇将围绕《JSP中文手册》展开,深入解析JSP的核心...
7. **JSP的开发流程**:通常涉及需求分析、设计、编码、测试和部署等多个步骤。在"源代码 ch3"中,可能包含了示例项目,展示如何使用JSP进行实际开发,比如创建用户登录、注册功能,或者实现数据的增删改查等操作。 ...
《JSP应用开发详解》源代码是一份宝贵的资源,它为深入理解JSP(Java Server Pages)技术提供了实践基础。JSP是Java平台上的一个重要组件,用于构建动态Web应用程序。本资源包含了一系列示例和练习,旨在帮助开发者...
### JSP教程详解 #### 第一章:JSP简介 **1.1 什么是JSP** JSP(Java Server Pages)是一种服务器端脚本技术,它允许在HTML文档中嵌入Java代码,使得Web页面能够根据请求动态生成内容。JSP页面在服务器上被编译成...
这个实例中包含了JSpsmart的源码,帮助开发者深入理解其工作原理并解决文件上传过程中的编码问题。 ### 一、JSpsmart核心功能 1. **大文件上传支持**:JSpsmart允许上传大文件,并且可以设定上传时的内存阈值,...
《图书管理系统(JSP)详解》 图书管理系统是一款常见的信息化应用,它可以帮助图书馆或个人进行图书的录入、借阅、归还、查询等操作。在这个系统中,我们使用了Java Server Pages(JSP)技术与MySQL数据库进行集成...
JSP 大学实用教程程序源代码详解 本资源为 JSP 大学实用教程程序源代码的详细解释,涵盖了 JSP 的基础知识、页面结构、变量、控制结构、函数、会话跟踪、数据库交互、安全等多方面的内容。 JSP 简介 JSP(Java ...
### MyEclipse 修改 JSP 模板方法详解 在日常的Web开发工作中,我们经常会用到MyEclipse这款集成开发环境(IDE)。MyEclipse是一款非常强大的Java EE开发工具,它集成了Eclipse平台,并提供了丰富的插件支持,极大...
【JSP图书管理系统详解——实现中文不乱码】 在IT领域,开发一款应用程序,特别是涉及到用户界面和数据库交互的系统,如"(jsp入门)图书管理系统",是开发者经常遇到的任务。本系统采用MyEclipse作为开发环境,...
在Java Web开发中,JSP(JavaServer Pages)常常与Servlet和过滤器(Filter)结合使用,以实现更复杂的业务逻辑和控制流程。过滤器在请求到达目标资源(如JSP页面或Servlet)之前和之后执行,可以用来进行权限验证、...
**JSP网页模板详解** JavaServer Pages(JSP)是一种基于Java的技术,用于创建动态、交互式的Web应用程序。它将内容的生成与显示分离,提高了开发效率和代码的可维护性。JSP网页模板则是这种技术的一个关键组成部分...