网页乱码原理

做博客项目中遇到浏览器的参数提交到服务器产生乱码现象,于是对乱码问题一探究竟。

1、网页乱码是怎么发生的

为了搞清楚,这个网页乱码可能出现的情况,我把网页的chaset,文件的编码方式和response的编码格式都作为变量来测试。结果如下:

由此我断定,网页的编码方式和解码方式一样的时候,才不会出现乱码现象。而浏览器的解码方式response的header设置的charset  >  meta charset。

2、浏览器给服务器传参乱码

浏览器给服务器传参乱码,有可能是浏览器在传给服务器之前就乱码了,也有可能是传给服务器,然后服务器的解码方式和传过来的参数的编码不一致导致的乱码;

服务器解码方式不一致,服务器需要加一个拦截器进行解码。

但是为什么,会在传给服务器之前就乱码呢。比如我使用百度的ueditor,在页面是gbk的环境下,上传图片,图片的名字是中文,就会出现filename字段在还没上传到服务器的时候就乱码了;但是,如果页面环境是utf-8的时候,就不会出现这样的问题。

我猜是浏览器浏览网页,该网页是以什么编码解析的,就会以什么编码去解析它需要读取的文件,而且是它的变量在内存中也是以这种编码保存的(如果不用js设置变量的编码方式的话;实际上我不知道有没有方法可以用js转换传过去服务器的变量的编码方式,如果有欢迎告知),当遇到这种编码不支持的字符的时候,就乱码了,这个时候还没发送到服务器。

再比如一个,gbk的网页,引入了编码方式为utf-8的js文件,这个js里面的中文就会出现乱码。

时间: 2024-10-15 04:59:34

网页乱码原理的相关文章

四个常见html网页乱码问题及解决办法

四个常见html网页乱码问题及解决办法 上周同事在做网页时,遇到网页打开之后都是乱码,同事很迷茫了,不知道该怎么解决,下面是小编抽时间把比较常见的html网页乱码问题及解决办法整理分享给大家. 其实导致网页乱码主要有几个原因,以下给出解决方法. 1.HTML的字符编码问题 该问题较常见,也是最明显和最容易解决的. 在网页<head>中加上: <meta http-equiv="Content-Type" Content="text/html;charset=

PHP网页乱码的问题

在自己制作一个网页时,时常会遇到网页乱码的问题. 其实导致网页乱码主要有几个原因,以下给出解决方法. 1.HTML的字符编码问题 该问题较常见,也是最明显和最容易解决的. 在网页<head>中加上: <meta http-equiv="Content-Type" Content="text/html;charset=utf8"/> 即可. 2.PHP的字符编码问题 这与上面类似. 在文件上方加上: header("Content-t

Request 接收参数乱码原理解析二:浏览器端编码原理

上一篇<Request 接收参数乱码原理解析一:服务器端解码原理>,分析了服务器端解码的过程,那么浏览器是根据什么编码的呢? 1. 浏览器解码 浏览器根据服务器页面响应Header中的“Content-Type: text/html; charset=gb2312”解码.修改web.config中“responseEncoding=utf-8”,发现服务器页面响应Header变成了“Content-Type: text/html; charset=utf8”. <system.web&g

【PHP】解决网页乱码问题

在自己制作一个网页时,时常会遇到网页乱码的问题. 其实导致网页乱码主要有几个原因,以下给出解决方法. 1.HTML的字符编码问题 该问题较常见,也是最明显和最容易解决的. 在网页<head>中加上: <meta http-equiv="Content-Type" Content="text/html;charset=utf8"/> 即可. 2.PHP的字符编码问题 这与上面类似. 在文件上方加上: header("Content-t

网页乱码,解决方法

网页乱码,字符集的问题.博主少说废话了!直接上解决方法! 二种:1.在apache/nginx配置文件中,将charset值 更改为utf8/gb2312 2.在apache/nginx配置文件中,将 Charset值直接注释掉,然后在你的网页动态语言中,加入这一行: <head> <meta http-equiv="content-type" content="text/html:charset=utf8/gb2312"/> </he

Request 接收参数乱码原理解析一:服务器端解码原理

“Server.UrlDecode(Server.UrlEncode("北京")) == “北京””,先用UrlEncode编码然后用UrlDecode解码,这条语句永远为true吗?答案是否定的,结果可能与很多人预想的不大一样.本文主要分析这一问题出现的原理,研究下Server.UrlEncode(),Server.UrlDecode(),Request["xxx"]三个函数与编码方式的关系. 1. 问题出现的情景 网站采用了GB2312编码,在Web.confi

python(27)requests 爬取网页乱码,解决方法

最近遇到爬取网页乱码的情况,找了好久找到了种解决的办法: html = requests.get(url,headers = head) html.apparent_encoding html.encoding = html.apparent_encoding print html.text 头文件中添加: import sys reload(sys) sys.setdefaultencoding("utf-8")

网页乱码解决小心得

出现乱码需要检查的项目:数据库编码.文件本身的字符集.html解析的字符集,如若上述项目编码一致仍然出现乱码,查看一下浏览器的编码,如果和设置的不一样说明上述设置有部分未成功,可以尝试使用header()函数再转化一下. FYI: 1. header("Content-type: text/html; charset=utf-8"); 2. <meta http-equiv="Content-Type" content="text/html; cha

python抓取中文网页乱码通用解决方法

我们经常通过python做采集网页数据的时候,会碰到一些乱码问题,今天给大家分享一个解决网页乱码,尤其是中文网页的通用方法. 首页我们需要安装chardet模块,这个可以通过easy_install 或者pip来安装. 安装完以后我们在控制台上导入模块,如果正常就可以. 比如我们遇到的一些ISO-8859-2也是可以通过下面的方法解决的. 直接上代码吧: import urllib2import sysimport chardet req = urllib2.Request("http://ww