这篇文章是对上一篇文章的补充
1.浏览器解析服务端页面的编码方式不再说。
2.浏览器端发送数据的编码格式:
1.javascript中
url编码解码encodeURI与encodeURIComponent 函数都是基于utf-8(默认处理,大家记住就可以了).这两个函数的区别我个人理解来说就是encodeURI是处理url的 ,而encodeURIComponent是处理url中每个参数的。
代码如下:
var uri="my test.asp?name=stale&car=saab";
document.write(encodeURI(uri));
上面的输出如下:
my%20test.asp?name=st%C3%A5le&car=saab
encodeURIComponent
代码如下:
var uri="http://jb51.net/my test.asp?name=stale&car=saab";
document.write(encodeURIComponent(uri));
上面的输出如下:
http%3A%2F%2Fjb51.net%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab
2.除了url地址栏中数据的编码格式与环境有关系外,页面内的数据都采用了当前页面本身的编码格式(环境还是说,<meta http-equiv="Content-Type" content="text/html; charset=GBK">这里规定的格式)。 )
例如:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
<script type="text/javascript">
var url="http://servlet.do?a=你好&b=你好";
window.location.href=url;
</script>
</head>
<body>
</body>
</html>
这个页面中的var url=。。。。。 url的编码格式就是GBK。
form表单中的数据同样的。小小总结:页面内部所有的数据编码格式都是Content-Type 决定的。
3.页面form post提交的数据处理如下:
application/x-www-form-urlencoded |
在发送前编码所有字符(默认) |
multipart/form-data |
不对字符编码。
在使用包含文件上传控件的表单时,必须使用该值。
|
text/plain |
空格转换为 "+" 加号,但不对特殊字符编码。 |
这个是http form规定
4.ajax get提交也就是url提交同普通的url提交一样。这里主要说的是post提交。ajax post提交没有遵循上面的表格。
它对提交的数据都没有进行编码。
5.通过分析上面几点,大家都浏览器端提交到后台的数据的编码格式都应该有了大概的了解。
3.下面说服务器解析数据
request.getParameter("")接收数据,首先进行一次解码(所有服务器都是如此,可能http协议要求)
既然是解码总得有个解码的方式吧:tomcat默认解码方式都是iso-8859-1,别的服务器大家自己看下。
1.对应get方式的请求,tomcat进行了一次默认的iso-8859-1解码(怎么更改tomcatget默认解码方式,大家自己上网搜索下巴),这个时候大家就可以根据客户端发送过来的编码类型进行操作了。
2.对应post方式的请求,
这里charset的值获得方式为如下两步:
(1)request.getCharacterEncoding("utf-8"),如果获得的编码格式不为空,好的,解码用这种格式(不走第二步了)如果获得的编码格式为空,好的只能进行第二步了
(2) 与服务器默认post解码格式 例如:tomcat解码默认为iso-8859-1.
3.着重说明一点:
举个例子:浏览器页面GBK格式编码 采用form post application/x-www-form-urlencoded 方式提交数据,,要发送数据假设为a ,那么发送前先对a编码为b,
tomcat服务器接受到数据b后,假设request.getCharacterEncoding("utf-8")编码格式为空。那么服务对b进行url解码(iso-8859-1.格式、) 假设为 B,此时得到的数据时什么样子呢, 是对数据a的iso-8859-1编码格式 假设为c (即:c=new String(B.getBytes(""GBK""),"iso-8859-1")),那么我们怎么样得到a的原始数据呢,将c还原为a 即:new String(B.getBytes("iso-8859-1"),"GBK");
4.着重说明
url解码过程不会对原始数据有任何损坏,具体还要大家自己多试验下了。
/**
* @param args
*/
public static void main(String[] args) {
try {
String username="http://servlet.do?a=你好&b=你好";
String dcodeuriusername=URLDecoder.decode(username, "UTF-8");
System.out.println(dcodeuriusername);
//result: http://servlet.do?a=你好&b=你好
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
总结:
1.主要关注点在于:浏览器端发送数据的元素原始编码类型,发送的数据是否进行了编码
大家只需要记住页面form post提交的数据
(application/x-www-form-urlencoded ----进行了url编码处理, text/plain----空格转换为 "+" 加号,
但不对特殊字符编码)。
即只有这两种form post提交的数据类型 进行了
编码处理其中application/x-www-form-urlencoded为正宗的url编码就可以了
2.服务器端接到数据后都进行了一次url解码处理,至于怎么解码就与相应的 web服务器与get post方式有关了。
服务端不采用默认url解码只有一种情况:
post提交并且request.getCharacterEncoding("utf-8")获得的编码格式不为空
分享到:
相关推荐
### Java/JSP中文乱码问题解决心得 #### 一、Java中文问题的由来 Java作为一种广泛使用的编程语言,其核心设计目标之一就是提供良好的跨平台能力。为此,Java采用了Unicode作为其内部处理字符的标准,这使得Java...
Java Web 学习心得 Java Web 学习心得是指学习 Java Web 开发相关技术的经验总结,涵盖了 HTML、CSS、JavaScript、XML、DTD/Schema、Java EE 中的 JSP、Servlet、Filter、Listener、JSTL、EL、JQuery、Ajax 等技术...
此外,解决汉字乱码问题还需要注意如下几点心得: - 对于不同版本的Java,它们的默认编码可能不同,需要根据实际的Java版本进行相应的编码设置。 - 在进行国际化软件开发时,应该避免在系统中使用默认编码,而应该...
Servlet是Java编程语言中的一个接口,用于生成动态Web内容,而JSP则是用于创建动态网页的视图技术。两者共同构成了Web应用的控制层和显示层。 首先,Servlet是基于HTTP协议的,它处理来自客户端(浏览器)的请求并...
过滤器可以用来处理乱码问题,实现URL重写,或者进行权限控制;监听器则可以用于跟踪用户的在线状态或统计网站访问量。 在数据库操作方面,通常会使用JDBC来连接和操作数据库,但随着ORM(对象关系映射)框架如...
总结几点处理Java字符编码问题的心得: 1. **始终坚持使用Unicode编码**:Unicode是跨语言的标准,能处理多种字符集,减少乱码风险。 2. **谨慎使用`String.getBytes()`**:不指定字符集可能导致依赖于JVM的默认...
这些项目可能涵盖Web开发、数据库集成、图形用户界面设计等多个方面,帮助学习者将Java技能应用于解决实际问题。 ### .NET框架简介 尽管主要讨论Java,但“.NET”这一标签表明资源可能也涉及微软的.NET框架。.NET...
### jdk+tomcat+jfreechart+sql_server2000安装心得 #### JDK 安装与配置 1. **JDK安装步骤**: - 首先下载`j2sdk_5_0.exe`安装包。 - 选择安装路径`C:\jdk1.5.0`。 - 设置环境变量`JAVA_HOME`指向`C:\jdk1.5.0...
- **字符编码转换**:在处理中文等非英文字符时,经常会出现乱码问题。为了解决这个问题,可以采用特定的编码格式进行转换。例如,将字符串从ISO-8859-1编码转换为UTF-8编码: ```java String title = ""; byte[]...
S2SH(Struts2、Spring、Hibernate)是一个经典的Java Web开发框架组合,它整合了三个强大的开源组件,以提供模型-视图-控制器(MVC)架构的解决方案。对于初学者来说,理解并熟练掌握S2SH框架的搭建过程是迈向专业...
在这个实验报告中,学生周媛娣通过Java Web开发实践,使用DAO模式实现了对数据库的操作,包括增加、查询等基本功能。 1. **DAO模式的理解**: DAO模式的核心思想是创建一个对象(DAO),该对象封装了对数据库的...
本篇文章将深入探讨"weblogic10配置"这一主题,包括WebLogic 9.x与XFire 1.2.6之间的冲突解决心得以及WebLogic服务器上的中文乱码处理方法。 一、WebLogic 9.x与XFire 1.2.6冲突解决 1. **冲突原因**:WebLogic 9....
- **PHP与Java的整合**: PHP可以直接创建Java对象进行交互。 #### 五、版本控制工具 **题目**: 常用的版本控制工具有哪些? **解答**: 主要有两种: - **CVS**: 较老的版本控制系统,仍然在一些项目中使用。 - **...
- **中文乱码问题**:确保整个开发环境中都使用UTF-8编码,包括服务器设置、数据库设置以及程序中的字符集编码。 - **Servlet配置问题**:确保`web.xml`文件正确配置Servlet的初始化参数及URL映射。 #### 实验...
比如中文字体乱码和PDF中无法正常显示的问题、报表分栏显示、去除记录中的null值、实现奇偶行不同背景颜色的交替显示、格式化输出、柱状图的横向显示、主报表和子报表参数的“沟通”、报表不同格式文件的导出、在Web...
- **Tomcat**:支持Web应用程序的开发和测试。 - **Spring Tool Suite (STS)**:提供Spring框架相关的功能。 - **Maven Integration for Eclipse**:支持Maven项目管理。 - **JDBC Drivers**:数据库连接支持。 ...
STS为开发者提供了丰富的功能支持,包括对Spring框架、Java语言以及各种Web技术的支持。STS不仅能够提高开发效率,还能简化开发流程。 #### 2. 版本信息 在提供的文件名“spring-tool-suite-3.7.0.RELEASE-e4.5-...
- **在FORMS调用WEB页面**:集成外部Web资源,扩展应用功能。 - **Name_In()\COPY()函数**:详细介绍这两个函数的使用场景和注意事项。 - **Forms数据提交的方式**:探索多种数据提交方式,如直接提交、批处理...
我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章。首先有两点是需要肯定的: 第一:XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解,等待只会让你失去机会; ...