`
linvar
  • 浏览: 254598 次
  • 性别: Icon_minigender_1
  • 来自: 未定
社区版块
存档分类
最新评论

客户端提交数据编码格式

阅读更多
客户端提交数据到服务有两种方式GET和POST
1.get方式
数据直接在url上进行拼接,使用&分隔key-value对.
但有时key,value会出现中文等对于html标准来说不安全的字符
html标准说
除了字符"a"-"z","A"-"Z","0"-"9",".","-","*",和"_" 其他的字符都是不安全的,需要进行编码.其中" "空格会被编码成+号
当出现不安全字符时,在发送到服务器之前,浏览器会将这些参数值进行编码,一般推荐是使用utf-8编码格式.
字符被转换为1个或者多个字节,然后每个字节都被表示成"%xy"格式的由3个字符组成的字符串,xy是字节的2位16进制的表示.
也可以使用javascript对数据进行encodeURIComponent(url);
现在的url就成了ASCII范围内的字符了,然后以iso-8859-1的编码方式转换成二进制随着请求头一起发送出去,对于get方法来说,没有请求实体,含有数据的url都在请求头里面
请注意,其实这里进行了两次编码,第一次是使用UTF8,第二次使用iso-8859-1编码成能在网络上传输二进制101010....
现在问题来到了服务器端,每种服务器默认的编码方式都可能不同,比如tomcat默认编码就是iso-8859-1, 而resin默认编码是utf-8
按道理服务器端也会做两次的解码动作,第一次是对二进制内容的iso-8859-1的解码,第二次是使用服务器默认的编码对数据进行解码,
因此我们使用request.getParameter("name")得到的数据是经过两次解码的.
当tomcat使用iso-8859-1对数据进行第二次解码时,因为对应客户端编码是utf8,
因此我们使用request.getParameter("name")就肯定乱码.
如果我们不去改变tomcat的默认编码,可以使用
new String(request.getParameter("name").getBytes("iso-8859-1"), "utf-8");手工重新解码.
request.setCharacterEncoding("utf-8")这种方式对于get方式提交数据是无效的,
但是对post方式提交数据却是有效的.因为get没有request body.

通常的做法还是修改tomcat的默认编码:
在server.xml中的connector加上URIEncoding="UTF-8"即可

2.post方式
post方式提交的数据也是必须进行编码的.
如果form所在html文件指定了编码,就使用那个编码进行url编码.

总结:为了防止出现乱码,一般系统相关的文件都设成utf8格式,web服务器,java服务器,数据库的编码格式都设为utf8.这样一般比较少出现乱码问题.
还有就是尽量使用post方式提交数据,一个是因为url的长度是有限制的,而get方式是将数据拼接到url上的.
分享到:
评论

相关推荐

    简单的ADO.net数据访问客户端

    简单的Ado.net数据访问客户端。 数据库访问入口 获取IDbClient 在开始之前,先添加一个数据库访问入口。当然,也可以使用任何你喜欢的方式来创建IDbClient(的实现类)实例。 public static class Db { private...

    搭建一个基于TCP的服务器,该服务器向用户提供以下功能:1. 地理位置编码解码 2.域名到IP的解析

    搭建相应的客户端,在客户端中用户可以选择所需要的功能,并向... 服务器根据客户端提交的请求,返回相应的数据 一个是程序的源代码 另一个是word文件,其中包括对源代码的说明,程序执行的流程,以及执行结果的截图

    Android使用Json与Asp.Net交互(上传/下载数据集)

    这是一个简单的在Android客户端连接Asp.Net进行上传或下载的示例,在Android客户端以psot形式发送请求到Asp.Net服务器端,服务器端接收到请求参数后...注:Android客户端提交的Json包含有中文字符时,注意编码为UTF-8

    彩虹ASP信息收集器 v1.1.4.624

    本程序在结构上采用数据与表现分离的模式,ASP后台及客户端前台生成的信息均为XML格式,用XSLT样式表对XML数据进行格式化输出,这样减轻了编码的强度,也使得程序的可扩展性更好。因为采用XML格式表示数据,ASP...

    delphi-http-restful客户端.7z

    delphi-http-restful客户端DLL及DEMO(delphi7测试通过) 支持GET,POST,PUT,DELETE 支持自动识别返回的编码转换 utf8 gbk 支持content-type: application/json application/x-www-form-urlencoded 格式数据提交

    Android音频开发

    首先,客户端向获取到的编解码器输入缓存区写入要编解码的数据并将其提交给编解码器,待编解码器处理完毕后将其转存到编码器的输出缓存区,同时收回客户端对输入缓存区的所有权;然后,客户端从获取到编解码输出缓存...

    JavaScript中出现乱码的处理心得

    客户端提交数据到后台,参数值有乱码情况,如:a.aspx?value=”中文值”&type=”%$#((&_特殊符号”; 2.后台读数据到客户端后出现乱码; 3.部分文件间js引用或css样式无效。 总结解决方法: 一:首先保证项目相关的...

    达内客户端+聊天室源码

    // 创建提交数据对象 httpclient = HttpClients.createDefault(); } /** * 处理在线疑答贴子列表源码数据 * @author 刑保政 */ public static String[][] splist(String Str) { Str = Str....

    jquery+ajax无刷新评论源码

    做AJAX应用,jquery提供的$.get()、$.post()函数都可以用于提交数据,但建议使用$.ajax()来提交,那两个函数都不 提供错误返回信息,不利全面掌控。 提交数据是action代表要执行的操作,id传递文章id,page是请求的...

    python网络编程学习笔记(六):Web客户端访问

    6.1 最简单的爬虫 网络爬虫是一个自动提取网页的程序,...(1)用GET方法提交数据提交表单的GET方法是把表单数据编码至URL。在给出请示的页面后,加上问号,接着是表单的元素。如在百度中搜索“马伊琍”得到url为http://

    jndn:适用于Java的NDN客户端库

    它是与NDN-TLV编码兼容的有线格式。 jNDN符合NDN通用客户端库API ,您的应用程序应遵循以下公共API: ://named-data.net/doc/ndn-ccl-api/。安装有关构建和安装说明,请参见文件 。 该库当前需要一个外部NDN守护...

    PHP编码转换函数 自动转换字符集支持数组转换

    当我们在接受未知客户端提交的数据,由于各客户端的编码不统一,但在我们的服务器端最终只能以一种编码方式来处理,这种情况下就会涉及到编码转换问题

    传智播客Android视频教程-课程源码.rar

    本软件包含手机客户端和服务器端软件,服务器端软件基于javaee技术构建,主要用于为客户端提供数据、接收客户端上传数据和管理数据。本软件可以进行二次定做,基础价为15万,如需额外功能,价格面议,欲购此软件的...

    Ajax课件学习(免费)

    2、因为只提交数据,所以每天提交请求的数据库不是很大,这样可以减轻网络传输数据的压力。 3、由于不用刷新整个页面,所以即便提交以后,展现在客户面前的页面还是不会消失的,这样对于客户的交互性特别好。 2.2...

    js与ASP.NET 中文乱码问题

    1. 客户端 -> 服务端的问题... 解决:(a) 在客户端提交前,对串中的非标准 ASCII 字符用 escape() 手动转码。 这种方法对非标码位置比较有规律(比如存放在不同的变量中)的情况比较合适。 在服务端获取后无须用 unescape

    FLEX快速入门.zip

    在典型的client-server环境中,数据校验发生在服务器端,在数据被从服务器提交以后。一个使用Flexvalidator的优点是在客户端执行,这使你在向服务器传输之前校验数据。通过使用Flex validators,你不需要传输数据,...

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    JSPExample7.jsp text.html页面提交至该页,并显示提交数据 text.html 页面数据提交至JSPExample7.jsp JSPExample8.jsp 不同类型混合运算自动转换 JSPExample9.jsp 不同类型混合运算强制...

    FindHim:GPS跟踪定位装置手机客户端

    而我主要负责这部分和服务器的编码,当然这也是题外话,下面详细介绍着三个部分。 硬件设备  硬件设备由四个模块组成:GPS模块、SIM卡模块、单片机、供电模块组成。 GPS模块负责周期性的获取被跟踪设备的地理位置...

    ndn-cpp:(已淘汰)适用于C ++和C的NDN客户端库

    它是与NDN-TLV编码兼容的有线格式。 NDN-CPP符合NDN通用客户端库API,您的应用程序应遵循以下公共API: : 。 更多的类和方法在Doxygen生成的文档中。 有关构建和安装说明,请参见文件 。 如果您通常不熟悉NDN软件...

    风越ASP代码生成器 试用版

     7、支持表单提交超过100KB的文本数据,支持文件上载  8、支持输入控件名加密功能,防止他人从客户端HTML中猜解数据字段名 ★  9、支持数据批量管理、排序功能  10、支持网站本机自动发布、调试  11、提供灵活...

Global site tag (gtag.js) - Google Analytics