请求参数中的中文读取问题
HTTP协议规定浏览器向web服务器传递的参数信息中不能出现某些特殊字符,
而必须对这些字符进行URL编码后再传递。Web服务器受到参数后,首先从中分离出每个
参数的名称和值部分,再进行URL解码,解码得到字节数组,然后按照某种字符集转换成
Unicode码
浏览器对form表单中输入的中文字符都会进行URL编码,再传送给web服务器。
浏览器会按照当前显示页面时所采用的字符集编码来进行URL编码。
5种情况:
1.对于HTTP请求消息的请求行中的URL地址后的参数(get方法提交表单),getParameter等方法进行
URL解码时所采用的字符集编码在Servelt规范中没有明确规定,它由各个Servlet引擎厂商
自行决定。对于这种情况,Tomcat中的ServletRequest对象的getParameter等方法默认
采用ISO8859-1进行解码
2.对于post方式下的"application/x-www-form-urlencoded"编码格式的实体内容,
getParameter等方法以ServletRequest对象的getCharacterEncoding()方法返回的字符集对
其进行URL解码。如果getCharacterEncoding()方法返回null,则采用ISO8859-1
3.ServletRequest接口中定义了一个setCharacterEncoding方法来设置请求消息中
的实体内容的字符集编码名称,getParameter方法以该方法设置的字符集编码对实体内容
进行URL解码。setCharacterEncoding方法来设置的字符集只影响getParameter方法对POST
过来的内容进行URL解码的结果,而不能影响URL地址后的参数进行URL解码的结果
4.在Tomcat配置中,连接器(HTTP Connector)属性中有一个URIEncoding和
useBodyEncodingForURI属性,这两个属性设置对URL后的附加参数进行URL解码时该如何选择
字符集编码。URIEncoding用于制定URL后的附加参数的字符集编码,useBodyEncodingForURI
则说明是否采用实体内容的字符集编码设置来替代URIEncoding的设置,也就是说当
useBodyEncodingForURI属性设置为true时,ServletRequest.setCharacterEncoding方法设置
的字符集编码也影响getParameter等方法对URL地址后的参数进行URL解码的结果。(在/%TomCat_Home%/
conf\server.xml文件中找到 <Connector>标记,然后在后面加上useBodyEncodingForURI=true)
5.不同厂商的Servlet引擎内部进行URL解码的处理方式可能不一样,所以URL后面的
中文参数最好还是进行URL编码。可以采用java.net.URLEncoder.encode()方法进行编码,然后
浏览器中所显示出来的就是一堆百分号之类的字符
分享到:
相关推荐
为了简化问题,我们将假设数据量较小,但实际应用中可以根据需要调整用户数量和循环次数。 #### 三、准备工作 **1. 准备txt文档** 首先需要创建一个txt文档用于存放用户ID。在这个例子中,我们将文档命名为`gld....
在Java Web开发中,经常遇到的一个问题是处理GET请求中的中文参数时出现乱码。这个问题主要是因为浏览器发送GET请求时,参数默认使用ISO-8859-1编码格式,而服务器端通常采用的是其他编码(如GBK、UTF-8等)。当...
为了确保正确读取请求参数中的中文字符,需要保证客户端和服务器端使用的字符编码一致: - **客户端**:一般会使用上一次响应的编码方式来编码请求参数。 - **服务器端**:通过 `request.getParameter()` 方法获取...
- 对于POST请求,由于在读取请求参数前可以设置编码,因此在Servlet中使用上述方法可以解决问题。 - 但是,如果需要同时处理GET和POST,以及避免每个Servlet都写相同的代码,那么创建一个全局Filter是最好的解决...
4. **URL编码**:对于GET请求,URL中的参数可能需要进行URL编码,防止特殊字符引起解析问题。使用`URLEncoder.encode()`方法: ```java String encodedParam = URLEncoder.encode("中文参数", "UTF-8"); String ...
通过修改Tomcat配置文件中的`URIEncoding`属性以及在Servlet中通过`response.setContentType()`和`request.setCharacterEncoding()`方法来设置字符编码,可以有效解决中文乱码问题。此外,还可以通过字符集转换的...
这行代码告诉Servlet解析请求参数时使用UTF-8编码,从而避免中文乱码。确保在读取任何参数之前调用此方法,因为一旦读取了参数,设置字符编码就没有效果了。 2. **解决GET请求中文乱码问题** GET请求的参数在URL...
`urlread`函数的基本用法是`S = urlread('URL','method',PARAMS)`,其中`URL`是你要访问的网页地址,`method`是HTTP请求方法(如'GET'或'POST'),`PARAMS`是一个结构体,可以用来设置额外的请求参数。默认情况下,`...
中文乱码问题在Java中的表现多种多样,例如,从文件读取中文数据时显示为乱码,通过HTTP请求接收的中文内容显示异常,或者在控制台上打印中文字符出现乱码等。这些问题的根源在于编码的不统一,比如文件是GBK编码,...
对于POST请求中的中文参数,可以使用过滤器来统一处理编码问题。过滤器只对POST请求有效,对于GET请求则无效。具体实现方式如下: ```java public class EncodingFilter implements Filter { @Override public ...
在IST8310的配置和数据读取中,主机(如微控制器)会向IST8310发送命令,设置其工作模式和参数,然后从传感器读取测量数据。I2C协议包含起始位、地址位、命令/数据位、应答位和停止位。设备地址和数据传输都需要按照...
标题中的"FANUC机床信息读取(C#)中文函数说明 C++可用.zip"指的是一个压缩文件,其中包含有关如何使用C#或C++编程语言来读取FANUC机床信息的详细资料。FANUC是一家知名的工业自动化和机器人制造商,其机床控制系统...
Java Web开发中,中文乱码问题是一个常见的困扰,主要出现在请求和响应的过程中。这主要是由于字符编码不一致导致的。本文将深入解析这个问题,并提供解决方案。 首先,我们要理解字符编码的基本概念。字符编码是将...
在Java编程中,中文编码问题是一个常见的挑战,尤其是在处理文本输入、输出以及网络通信时。本文将深入探讨Java中的中文编码问题,以及如何有效地解决这些问题。 首先,我们要了解字符编码的基本概念。字符编码是...
3. **Servlet中的编码处理不当**:在Servlet中读取请求参数时,如果没有正确的编码转换,也可能导致乱码。 ### 解决方案 #### 1. 配置Tomcat服务器 根据提供的部分内容,可以看到对Tomcat服务器的`server.xml`...
易语言是一种专为中国人设计的编程语言,它以简体中文作为编程语句,降低了编程的门槛,使得更多的人能够参与到编程中来。本压缩包“易语言超速读取网页源码模块.zip”提供了易语言项目的源码示例,特别适合初学者...
但要注意,这个方法必须在读取请求参数或请求体之前调用,因为一旦读取,编码就无法改变了。 3. **使用Filter解码**: - 由于`setCharacterEncoding`可能在某些情况下不起作用(比如POST请求的数据部分),我们...
在IT领域,尤其是在Web开发中,遇到中文乱码问题是一个常见的挑战,特别是在处理WebService时。本文将深入探讨“WebSevice中文乱码”的问题,包括其产生的原因、影响以及解决方案,帮助开发者更好地理解和应对这一...
3. 在数据库中存储和读取中文数据 对于大多数数据库的 JDBC 驱动程序,在 Java 程序和数据库之间传递数据都是以 ISO-8859-1 为默认编码格式,所以,我们在程序中向数据库存储包含中文的数据时,JDBC 驱动程序首先把...
sysctl.conf中文参数指南 sysctl.conf是Linux系统中的一份核心配置文件,用于控制和设置系统的各种参数。下面是sysctl.conf文件中的重要参数解释: 1. dev.scsi.logging_level = 0 这个参数控制SCSI设备的日志...