`
linvar
  • 浏览: 258919 次
  • 性别: 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上的.
分享到:
评论

相关推荐

    android客户端向服务器提交请求的中文乱码问题

    这通常是由于编码格式不一致或处理不当导致的。以下将详细解释这个问题的原因、影响以及如何解决。 首先,我们要明白字符编码的基本原理。在计算机中,字符是以特定编码方式存储的,如ASCII、UTF-8、GBK等。当数据...

    提交数据到服务器中文乱码处理

    通过以上步骤和示例代码,我们可以有效地处理提交数据到服务器时的中文乱码问题。在实际开发中,理解并正确应用字符编码是非常重要的,它可以避免许多不必要的错误和混淆,提升软件的稳定性和用户体验。

    客户端GET、POST上传数据

    POST方法则是更为复杂的请求方式,它用于向服务器提交数据,比如表单提交。POST请求的数据放在请求体中,不会显示在URL上,因此可以传输大量数据,且更安全。在Android前端开发中,我们通常使用`HttpURLConnection`...

    JSP用户提交页面编码

    其中,数据编码问题尤为关键,因为错误的编码设置可能会导致乱码问题,严重影响用户体验。 #### 一、问题背景与重要性 在Web应用中,客户端通过HTTP协议向服务器发送请求,这些请求可能包含表单数据等用户输入的...

    Android客户端上传数据到tomcat服务端的源码

    5. 响应:服务器处理完请求后,向客户端返回响应,可以是状态码、JSON数据或其他格式。 三、安全性和性能优化 1. HTTPS:为了保护数据传输的安全性,推荐使用HTTPS协议,需要在服务器配置SSL证书,并在客户端设置...

    使用JQuery实现从JSON对象转换为form提交数据

    本篇文章将深入探讨如何利用jQuery从JSON对象转换为form提交数据。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和...

    Android手机客户端与Web服务器的通信.pdf

    Android手机客户端访问Web服务器的过程可以分为两个部分:客户端提交数据和服务器响应数据。首先,Android手机客户端需要将数据提交给Web服务器,这可以通过使用HttpPost对象来实现。HttpPost对象的主要作用是将...

    Ajax开发过程表单提交数据出现乱码和解决办法

    因此,如果URL编码格式与服务器端处理请求的编码格式不一致,就会出现乱码。例如,如果前端使用了UTF-8编码,而服务器端默认使用GBK编码,就会导致乱码。 - **解决办法**:确保URL参数的编码与服务器端的编码一致...

    Android客户端和服务器端数据交互Demo03.zip

    POST则常用于提交数据,参数放在请求体中。在Android中,使用OkHttp或Retrofit创建这些请求并添加请求头和请求体是很常见的。 服务器响应后,客户端需要解析返回的数据。这可能涉及解析JSON,提取关键信息,然后...

    服务器与客户编码问题分析

    在B/S架构中,客户端浏览器向服务器提交数据主要有两种方式:表单(Form)提交和Ajax异步请求。对于表单提交,浏览器会根据操作系统的默认编码(如GBK)对输入数据进行编码。而在Ajax请求中,情况有所不同,...

    axis2客户端编码,RPC,OMElement,上传下载实现,服务端验证

    “服务端验证”可能指的是在服务端对客户端提交的数据进行合法性检查,例如验证用户身份、文件格式、大小等。这通常涉及到安全性措施,如身份认证、授权和数据完整性检查。 在实际应用中,开发人员可能会使用Axis2...

    大数据post提交数据丢失,问题.docx

    综上所述,解决“大数据post提交数据丢失,Tomcat接收不到大数据”的问题,需要从服务器配置、网络环境、编码格式以及开发环境设置等多方面进行排查和优化。同时,熟练掌握Eclipse的热编译和项目导入技巧,可以显著...

    jsp乱码解决方法.txt

    2. **客户端提交数据的编码格式与服务器端接收数据的编码格式不一致**:通常情况下,客户端提交的数据默认采用ISO-8859-1编码,而服务器端期望的数据编码可能是GB2312或UTF-8等。 3. **服务器环境配置问题**:如...

    字符编码过滤器 字符编码转换 post字符转换

    它通常是一个Servlet Filter,会在HTTP请求到达目标Servlet之前对请求进行预处理,将请求中的字符编码转换为应用程序期望的编码格式。例如,当客户端(如浏览器)使用POST方式提交非UTF-8编码的数据时,过滤器可以...

    ASP.NET从客户端中检测到有潜在危险的request.form值的3种解决方法

    在***应用开发中,经常会遇到客户端提交的数据中包含HTML代码或JavaScript代码,这种情况下,***默认会拦截此类请求并抛出一个错误提示:“从客户端中检测到有潜在危险的request.form值”。这样的安全措施是为了防止...

    易语言post提交示例

    POST的数据部分需要按照指定的格式编码。如果是表单数据,一般使用URL编码。易语言提供了“URL编码字符串”函数,将键值对组合成URL编码的字符串。 4. **发送POST请求**: 使用“发送TCP数据”函数,将构造好的...

    Android客户端与服务端交互-客户端GET方式登录和客户端POST方式查询

    总的来说,Android客户端与服务端的交互涉及网络请求、数据编码解码、错误处理等多个环节,而GET和POST则是最基础的通信方式。了解和掌握这些知识点,对于开发出功能完备、性能良好的Android应用至关重要。

    客户端脚本验证总结

    客户端脚本验证是Web开发中不可或缺的一环,它主要用于在用户与服务器交互的前端阶段确保数据的正确性和安全性。在JavaScript这一强大的客户端编程语言的支持下,我们可以实现多种验证策略,提高用户体验并减轻...

Global site tag (gtag.js) - Google Analytics