您的位置:首页 > 其它

解决客户端浏览器和服务器交互的编码问题详解

2017-09-16 15:15 330 查看
一:针对于练习仿mvc的jsp+servlet+jsp的模式编程的一些编码问题?

1:浏览器使用编码UTF-8+post请求服务器时,在服务器的servlet被访问类中,需要服务器内置对象request配置request.setCharacterEncoding("UTF-8"),如果是其他的编码格式如gbk+post那么在服务器中就配置request.setCharacterEncoding("GBK"),意思是告诉服务器使用gbk编码进行解码

2:浏览器使用编码UTF-8+get请求服务器时,如果像设置post请求,也会是乱码,因为服务器默认使用,"ISO-8859-1"编码,那么我们是这样解决的,拿到原始数据的二进制数据,在进行

UTF-8重新编码,如具体操作,String name = request.getParameter("name"); byte[] b = name.getBytes("ISO-8859-1");String name = new String(b,"UTF-8");这样就可以得到浏览器数据需要的utf-8格式数据,如果是gbk+get 也是一样的方式进行操作.

3:服务器响应浏览器,数据不乱码,服务器的response对象需进行2个动作,先告诉服务器使用UTF-8进行编码response.setCharacterEncoding("UTF-8"),然后在告诉浏览器需要用UTF-8来解析,response.setHeader("content-type","text/html,charset=UTF-8");这样就服务器和浏览器都使用UTF-8编码

4:服务器响应客户端的2个动作简化设置,response.setContentType("text/html,charset=UTF-8");

5:一般的编程中我会进行2个设置:request.setCharacterEncoding("UTF-8"),,response.setContentType("text/html,charset=UTF-8").只是针对post

二:针对于web层mvc框架的开发解决编码的问题,这里说的是全局的配置

1:如果是get请求产生中文的乱码那么我们可以在服务器的servers中server.xml配置编码具体的配置如下

首先找到我们的文件位置servers/springmvc at localhost-config/server.xml

配置前:<Connector  connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>中添加URIEncoding="UTF-8",那么就可以解决get请求编码

配置后: <Connector URIEncoding="UTF-8"  connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

2:如果是post的编码,需要在web.xml中配置全局编码过滤器,过滤所有的post请求的编码问题具体配置如下

<filter>

<filter-name>characterEncoding</filter-name>

<filter-class>ore.springframewor.web.filter.characterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8<param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>characterEncoding</filter-name>

<url-pattern>/*<url-pattern>

<filter-mapping>

3:一般在开发中我会将以上个2步骤先完成.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐