1,提交表单时可以指定编码吗?
准确地说:提交表单时可以指定请求要素的编码吗?
如果是使用html的form表单是不行的.
下面是我做的实验,html如下:
不仅head中指定了编码为gbk,而且form属性accept-charset 也指定为gbk,但是提交表单时,后台获取到的request charset却是"UTF-8",
chrome和火狐浏览器中都是一样.
结论:
(a)html的form表单标签中无法指定request的编码.
(b)提交的请求编码是UTF-8
那么表单标签中的属性accept-charset有什么作用呢?
告诉浏览器提交表单时以什么编码方式对请求要素进行编码
如上图,指定了accept-charset 的编码为:UTF-8,页面的编码是utf-8,而head中指定GBK编码,所以
address 的值乱码了,本来应该是"中国",结果显示:
中国,两个汉字,以UTF-8编码则有6个字节,因为在html的header中指定了GBK编码,所以6个字节按照GBK解码,就是3个汉字,因此乱码.
提交post请求时,3个汉字会以accept-charset 指定的编码(UTF-8)来编码,所以是9个字节:
所以accept-charset 只是指定了提交时对请求要素如何编码,但是并没有指定请求的编码.
通俗点:只是默默地做了事,但是没有告诉服务器.
2,提交表单时为什么要指定请求编码?
解决乱码:
告诉服务器,请求要素的编码方式,这样服务器才知道应该如何解码.
3,方案
使用HttpURLConnection 可以指定编码
如何指定呢?
huc.addRequestProperty("content-type", contentType);
contentType的值为:application/x-www-form-urlencoded;charset=GBK
4,服务器如何获取请求编码?
String charEncoding = request.getCharacterEncoding();
/*** * Get request query string, form method : post * * @param request * @return * @throws IOException */ public static String getRequestPostStr(HttpServletRequest request) throws IOException { byte buffer[] = getRequestPostBytes(request); if(ValueWidget.isNullOrEmpty(buffer)){ return null; } String charEncoding = request.getCharacterEncoding(); if (charEncoding == null) { charEncoding = "UTF-8"; } return new String(buffer, charEncoding); }
相关推荐
这将告诉浏览器以UTF-8编码提交表单数据。但请注意,这并不保证服务器端会正确处理,还需要服务器端的配合。 3. 服务器端处理:在JSP中接收表单数据时,可以通过设置请求对象的编码来确保正确解码。通常在Servlet...
在IT行业中,表单提交和服务器接收数据的过程是Web应用中的基础操作,涉及到字符编码、解码的关键环节。本文将纠正“关于'form表单提交数据编码方式和tomcat接受数据解码方式的思考'”一文中可能存在的错误,并深入...
### 提交表单生成HTML文件 #### 知识点概览 1. **HTML表单基本结构** 2. **表单提交方式与处理** 3. **JSP基础语法及使用** 4. **Java后台处理流程** 5. **文件操作:读写与创建** #### HTML表单基本结构 在给定...
根据提供的文件信息,本文将详细解释如何通过ASP脚本实现将表单信息提交至指定邮箱的功能。这不仅涉及具体的代码实现细节,还包括了对代码各部分功能的理解与应用。 ### 表单信息提交到指定邮箱 #### 核心概念解析...
在这个“Ajax使用jQuery提交表单 文件”中,我们将探讨如何利用jQuery实现Ajax提交表单,从而实现异步数据传输,提高用户体验。 首先,我们需要理解jQuery中的Ajax函数`$.ajax()`。这是一个核心函数,可以进行各种...
java中用URLConnection类post方式提交表单 java中用URLConnection类post方式提交表单是指在java应用程序中使用java.net.URLConnection类来实现POST方式的表单提交。POST方式是HTTP协议中的一种常见的请求方法,它...
表单域的数据可以通过Acrobat的“提交表单”功能或者编程方式(如JavaScript)发送到服务器。 2. **数据提交机制**: PDF表单数据的提交通常有两种方式:HTTP POST和FTP。POST方法是更常见的方式,它将表单数据...
- **使用AJAX提交表单** 用户填写表单后,点击提交按钮,JavaScript阻止默认的表单提交行为,然后使用AJAX将表单数据发送到服务器。成功接收响应后,可以在前端更新界面,无需刷新整个页面。 6. **工具支持** ...
在现代Web应用开发中,异步提交表单是一种常见的技术手段,它能够提升用户体验,减少页面刷新带来的数据丢失风险,并能有效提高系统的响应速度。EXT框架(通常指的是Ext JS)作为一种成熟且功能丰富的JavaScript库,...
通过以上介绍的函数及其用法,我们可以有效地处理表单提交的字符,确保数据在存储或显示时的安全性。在实际开发中,根据具体需求选择合适的函数是非常重要的。例如,在向数据库插入数据时,应使用`mysql_real_escape...
在提交表单之前,还需要注意以下几个关键点: - **参数编码**:确保所有的表单参数都进行了正确的URL编码,以防止特殊字符导致的问题。 - **参数顺序**:某些场景下,参数的顺序可能会影响结果,特别是涉及到签名...
### httpclient 测试登录并提交表单功能 #### 概述 本文将详细介绍如何使用Apache HttpClient库进行模拟登录以及提交表单数据的操作。通过一个具体的示例程序来演示这一过程,帮助读者理解整个流程。 #### 使用...
在使用Ext Ajax提交表单前,通常需要先将表单数据序列化为JSON或URL编码格式。ExtJs 4.0的FormPanel对象提供了`getForm()`方法获取表单实例,然后通过`form.submit()`或`form.serialize()`方法完成数据的序列化。 ...
在模拟表单提交时,数据通常包含键值对,如"file"字段对应于图片文件内容。 5. **处理响应**:发送完数据后,我们需要读取服务器的响应。这可以通过CHttpFile的Read方法完成,然后根据HTTP状态码判断请求是否成功。...
这篇文章将介绍两种在JavaScript中处理表单提交时URL参数包含特殊字符(如"+")的解决方法。 首先,需要了解在URL中常用的特殊字符及其编码形式,这是因为这些字符如果直接出现在URL参数中,可能会被浏览器误解为...
下面我们将深入探讨如何解决J2EE环境下GET和POST方式提交表单时出现的乱码问题。 首先,我们要理解GET和POST的区别。GET方式会将表单数据附加到URL后面,而POST方式则将数据放在请求体中。由于GET方式的限制,它...
当我们处理表单提交时,可能会遇到数据乱码的问题,尤其是在涉及非ASCII字符集(如中文、日文或韩文等)时。这通常与字符编码设置不正确有关。下面,我们将深入探讨这个问题,并提供解决方案。 首先,乱码问题通常...
在这个例子中,我们利用JavaScript来监听键盘事件,并在用户按下Enter键时自动提交表单。 ```javascript document.onkeydown = function (evt) { var evt = window.event ? window.event : evt; // 兼容IE和其他...
在处理表单数据时,应确保正确编码每个字段。对于URL编码,VB中可以使用`Server.URLEncode`函数。在实际应用中,你可能需要根据实际情况处理错误,例如网络连接问题、服务器返回的错误状态码等。 此外,如果你的VB...
当用户提交表单时,通常会触发一个HTTP请求,将数据发送到服务器进行处理。传统的表单提交方式会导致页面刷新,这在某些场景下并不理想,比如需要保持页面状态或者实现无刷新操作。在这种情况下,我们可以通过模拟...