1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 如何解决php request 乱码问题

如何解决php request 乱码问题

时间:2024-01-13 12:12:53

相关推荐

如何解决php request 乱码问题

后端开发|PHP问题

request

后端开发-PHP问题

杂志主题源码,ubuntu系统与苹果,tomcat下载安装服务器,爬虫 进度条,php字符串转浮点型,宁德注册seolzw

推荐:《PHP视频教学》

php 游戏 源码,vscode界面变小,ubuntu机型,doc 启动tomcat,sqlite为什么没人用,discuz网易云音乐插件下载,哪个前端框架最容易学习,桌面很小的爬虫是什么,php 怎么面试,青海seo优化软件,国外代练网站源码,网页游戏私服源码搭建,自适应静态网站模板lzw

request、response 中文乱码问题与解决方式

共享币开源码是多少,vscode重写方法,ubuntu 安装输入法,tomcat 内存溢出,sqlite 大量数据,眉山网页设计,帝国cms修改数据库名,阿里巴巴 服务器规格,wordpress手机版插件,前端ko框架,爬虫分词,截取字符串php,培训seo技术,编译springboot,网站三大标签修改注意事项,炫酷的移动端网站,名片赞网页源码,扫码点餐模板,万网域名后台怎么登陆,ajax提交form表单跳转页面,会员管理系统 asp 下载,des加密程序下载lzw

request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码;

response乱码指的是:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码;

乱码产生的原因:不管是request乱码还是response乱码,其实都是由于客户端(浏览器)跟服务器端采用的编码格式不一致造成的。以request乱码为例:浏览器向服务器发送请求,因为浏览器与服务器之间的通信实质上是socket流,所以要先将请求参数(字符)转换成字节,也就是编码过程,服务器接收到请求参数后进行解码(字节转字符),然后封装到request对象中。如果客户端的编码与服务器端的解码不统一,就会导致通过request获取到的请求参数的值是乱码。

解决:

A、response乱码

服务器发给浏览器的数据默认是按照ISO-8859-1编码,浏览器接收到数据后按照默认的字符集进行解码后显示,如果浏览器的默认解码字符集不是ISO-8859-1,就出现乱码。

对于response乱码,只需要在服务器端指定一个编码字符集,然后通知浏览器按照这个字符集进行解码就可以了。有三种方式:

1、A、设置服务器端的编码

response.setCharacterEncoding(“utf-8”);

默认是ISO-8859-1;该方法必须在response.getWriter()之前进行设置

B、通知浏览器服务器发送的数据格式

response.setHeader(“contentType”, “text/html; charset=utf-8”);

2、A、通知浏览器服务器发送的数据格式

response.setContentType(“text/html;charset=utf-8”);

等同于response.setHeader(“contentType”, “text/html; charset=utf-8”);它其实会覆盖response.setCharacterEncoding(“utf-8”) ,在开发中只需要设

B、设置服务器端的编码

response.setContentType(“text/html;charset=utf-8”);

3、A、设置服务器端的编码

response.setCharacterEncoding(“utf-8”);

B、浏览器使用utf-8进行解码

总结:设置:

A、设置服务器端的编码

response.setCharacterEncoding(“utf-8”);

B、通知浏览器服务器发送的数据格式

response.setContentType(“text/html;charset=utf-8”);

C、浏览器使用utf-8进行解码

本人就是这样设置的,以防万一;

B、request乱码

从浏览器发起的访问方式有三种:在地址栏直接输入URL访问、点击页面中的超链接访问、提交表单访问。第一种访问方式浏览器默认将参数按照utf-8进行编码,后面两种访问方式浏览器将参数按照当前页面的显示编码进行编码。所以对于request乱码,只需要在服务器端设置相应的解码格式即可。由于访问方式不同,浏览器对参数的编码格式也不同,为了方便处理,通过超链接和表单的访问也规定必须是utf-8格式,即显示当前页面的编码也要使用utf-8,这样浏览器将统一使用utf-8对参数进行编码。

A、post方式

post方式属于表单提交,参数存在于请求体中。

request.setCharacterEncoding(“utf-8”)

B、get方式

get方式提交的参数会跟在请求行中的uri后边,服务器按照默认的iso-8859-1进行解码,这时候解决乱码有两种办法:

办法一:修改服务器端对uri参数的默认编码

在tomcat的server.xml中,设置元素的属性URIEncoding=”UTF-8”即可。(默认没有设置此属性)

例如: 注意:1、设置元素的属性useBodyEncodingForURI=“true”,意思是请求体和uri使用相同的编码格式。通过设置这两个属性,既可以解决get方式的乱码,又可以解决post方式的乱码。2、通过修改server.xml指定服务器对get和post统一按照utf-8解码,要求tomcat管理下的所有web应用都要使用utf-8编码,即所有的jsp、html页面都使用utf-8编码。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。