解决客户端浏览器和服务器交互的编码问题详解
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步骤先完成.
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步骤先完成.
相关文章推荐
- 解决oracle服务器和客户端编码不匹配的问题
- “由于无法升级或重续本地计算机的客户端访问许可证,远程会话被中断。请跟服务器管理员联系。”问题的解决
- flex 解决从服务器传回数据的编码格式问题
- iPhone客户端与服务器间粘包问题的解决代码
- Eclipse rap 富客户端开发总结(8) - 发布到tomcat后解决rap编码和字符集的问题
- as3中的socket的readUTFBytes方法,它的UTF指的是UTF-8,只要服务器采用UTF-8编码,传输和修改中文的问题就能解决
- db2客户端 访问远端服务器SQL1336N 问题解决方法
- 解决Android与服务器交互大容量数据问题
- 浏览器为IE9时在服务器注册window.open的问题(已解决)
- Lync Server 2010 客户端访问提示验证服务器中的证书时遇到问题解决方法
- 解决本地文本文件上传到服务器乱码问题(C#),ANSI转UTF-8编码
- [问题]VB通信中怎么解决1(服务器)对多(客户端)的发信息?
- Request的编码问题,客户端为繁体系统时为乱码-解决了。
- 解决Android与服务器交互大容量数据问题
- iPhone 在XML或JSON交互过程中出现的编码问题解决办法
- 解决apache服务器默认编码为西欧编码的问题
- 绝对酷,如何解决asp.net中javascript脚本的问题(使用服务器控件执行客户端脚本)
- 绝对酷,如何解决asp.net中javascript脚本的问题(使用服务器控件执行客户端脚本)
- 用expect解决交互问题,批量在服务器上做同样操作
- 商贸通服装鞋帽版客户端无法连接服务器的问题(自己遇到的,已解决)