1.网页乱码的问题是如何产生的?怎样解决?
当一个网页出现在你面前的时候,它已经经历了一个写入到展示的过程:
1.使用编辑器编写HTML文件
2.保存编写的HTML文件
3.使用浏览器打开HTML文件
4.HTML文件在浏览器展示
在编辑一份代码的时候,会用一个文件来存储这份代码,这就是编码方式。这种编码计算机可读而人类不可读。例如:在网页中我们看到这样一句话:<meta charset ="utf-8"/>,这里的“utf-8”
就是一种编码方式,这个又是什么意思呢,下面我们来认识几种:
认识几种编码方式
ASCII
全称美国标准信息交换代码(American Standard Code for Information Interchange)的缩写,
为美国英语通信所设计。它由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)
组成,每个字符占7位(1字节是8位)。
ISOLatin-1
可以认为ASCII是美国发明针对英语设计的,但欧洲人在用的时候出现了问题。对于一些特殊的拉丁字符,比如法文德文里某些字符,ASCII字符集
就不包括。于是欧洲人发明了一种8位字符集是ISO 8859-1Latin
1,也简称为ISOLatin-1。它对ASCII做了个扩充,对于0-127之间的字符还使用ASCII里的字符不变,
把位于128-255之间的字符表示拉丁字母表中特殊语言字符。
UNICODE
后来计算机不断发展扩展到亚洲非洲,如何用计算机使用的二进制表示这些语言又成了问题。ISOLatin-1的8位字符集只能表示256个字符,而仅汉语就有80000以上个字符。如何把地球上绝大多数语言用一种编码方式表示出来呢? 于是发明了UNICODE编码,只用2个字节(16位)就可以编码地球上几乎所有地区的文字。
但是,UNICODE只是理论上的编码方式,相当于给世界上每个文字打了个编号,但这编号具体如何在计算机里面存储,可以有多种实现方式。比如utf-8和gbk。
前面说了UNICODE只是给每个文字打了个编号,为啥不把这个编号直接转化成二进制存储在计算机里面呢? 比如英文字母s的编号是115, 用二进制表示是00000000 1110011, 中文日的编号是26085 (16进制是65e5) ,二进制是11001011 1100101。老外才没那么傻,对于老外这种日常纯粹是用英文字符的人来说明明之前1个字节就能存储一个字母,现在为了全球大一统非要存储为2个字节,相当于一个之前一个1M的文档,现在变为2M。于是老外耍了赖,英文字母s是115没错,但我就用1个字节1110011表示,而你中文日是26085号也没错,但是你不能在使用2个表示,而是用2个甚至6个字节表示。(为了英文的特权,牺牲其他语言的存储空间的便利),这个编码方式就是UTF-8。
UTF-8
utf-8(8-bit Unicode Transformation
Format)是一种针对Unicode的可变长度字符编码,又称万国码。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示
中文简体繁体及其它语言(如英文,日文,韩文)。
那GBK又是如何产生的呢?
GBK
这时候中国不干了,为啥你制定了全球大一统的规则,却为了自己的便利又破坏规则,把方便留给自己不便留给别人呢?
明明用2个字节就能表示中文一个汉字,现在UTF-8编码中文竟然需要2个甚至4个字节来表示。于是中国制定一套自己的规则,于是用2个字节来表示一个汉
字,总共可以覆盖2万多个文字。 对于英文,好吧让一步,还保留和你UTF-8同样的方式使用一个字节来表示。
记住:UNICODE只是给字符一个代号,而GBK和UTF-8使用不同的规则来表示同一个代号。
以上,就是关于几种编码方式的知识 (引用于饥人谷若愚老师)
编码的存储需要 编码方式 来转化,网页内容展示也需要编码方式的转化。所以,网页乱码的产生一般就是因为编码不一致产生的,比如:比如:html表单默认编码方式是“gbk”,然后浏览器默认的是“utf-8”,即如果当前页面的显示编码和获取到的值的编码不一致的话就会产生乱码。这只是其中一种情况,一个网页要正常显示涉及多处编码问题。
1模板头部编码
模板源代码中所指定的编码
2模板自身编码
是模板保存到磁盘的编码,许多站长不知道这个编码。以UE为例,在保存文件时会提示选择编码,具体到AKCMS,通过AKCMS后台保存的模板会使用和AKCMS配置(/configs/configs.inc.php)一样的编码设置
3数据编码
数据可能是数据库也可能是缓存文件或读取URL的内容,最常见的数据源是数据库。
以上编码必须统一,才能正常显式,否则页面的部分或全部就会出现乱码。
遇到网页乱码第一步是先分析问题,先定位了问题才能有针对的快速解决,否则浪费时间也没有效果:
2.颜色有几种写法, 红色、 绿色、蓝色、白色、黑色如何表示? 透明黑色如何表示?#ccc的颜色,#eee的颜色?#333的颜色?
颜色有三种表示方式,分别为十六进制,RGB代码,预定义的颜色值
十六进制的代码表示。如bgcolor=#ff0000;其中#只是表示使用6位16进制的颜色代码声明颜色。代码的头两位即ff表示三原色中的红色,范围当然是16进制的00-ff,中间两位即00表示绿色,最后两位即00表示蓝色,00表示没有颜色,ff表示颜色最强。所以000000表示黑色,ffffff表示白色,同样ff0000表示纯红色,00ff00表示纯绿色,0000ff表示纯蓝色。实际工作中,十六进制是最常用的定义颜色的方式。
RGB代码:颜色还可以用rgb(r,g,b)表示,括号中的r,g,b分别用0-255的十进制数或百分比表示红绿蓝,例如rgb(255,0,0)以及rgb(100%,0%,0%)都表示红色。
预定义的颜色值:颜色的表示还可以用颜色的关键字表示,共16个。
RGBA模式:CSS3颜色值透明表示方式
R:红色值。正整数 | 百分数
G:绿色值。正整数 | 百分数
B:蓝色值。正整数 | 百分数
A:Alpha透明度。取值0~1之间。
透明黑色 rgb(0,0,0,0.5)
Black 黑色 #000000 rgb(0,0,0,)
Green 绿色 #008000 rgb(255,180,0,)
Red 红色 #FF0000 rgb(255,0,0,)
Blue 蓝色 #0000FF rgb(0,0,255,)
White 白色 #FFFFFF rgb(255,255,255,)
(http://www.sioe.cn/yingyong/yanse-rgb-16/ )
3.<!doctype html>的作用是什么?
作用:文档声明,对文档进行解析,以HTML标准对页面进行渲染。浏览器根据文件后缀进行解析,根据文档规则对文档进行不同的编辑。
4.严格模式和混杂模式指什么?
严格模式指加了文档声明,混杂模式即未加文档声明
5.meta 有什么作用,常见的值有哪些?
meta标签共有两个属性,它们分别是http-equiv属性和name属性,不同的属性又有不同的参数值,这些不同的参数值就实现了不同的网页功能。
name的属性值又分为三种情况:
(1)设置网页关键字
name属性的 值为keywords,用于定义搜索内容,即网页关键字,content属性 的值用于定义具体内容:多个关键字内容之间用“,”隔开。
(2)设置网页描述
name属性值为description,用于定义搜索内容名称为网页描述,content属性的值用于定义描述的具体的内容。
(3)设置网页作者
name属性值为autor,用于定义搜索内容名称为网络作者
http-equiv分为以下几种情况:
(1)设置字符集
<meta http-equiv ="名称" content="值"/>
http-equiv属性值为content-type,content属性值为text/html ,charset ="utf-8",用于说明当前文档类型为html。字符集为utf-8.
(2)设置页面自动刷新与跳转
<meta http-equiv ="refresh" content ="10">,用于指定在特定的时间后跳转至目标页面,content值默认以秒为单位。
总结一下,就是在<meta>标记中使用http-equiv/content属性可以设置服务器发送给 浏览器的http头部信息,为浏览器显示该页面提供相关的参数,其中http-equiv属性提供参数类型,content属性提供对应的参数值。
6.<meta http-equiv =”X-UA-Compatible”content="IE=edge,chrome=1">有什么作用?
其中http-equiv=”X-UA-Compatible”这个是IE8的专用标记,是用来指定Internet Explorer 8 浏览器模拟某个特定版本IE浏览器的渲染方式,以此来解决IE浏览器的兼容问题。
后面一句则是让网页优先采用chrome进行渲染
7.常见的浏览器有哪些,什么内核?
常见的浏览器及内核如下:
常见的有IE浏览器,使用Trident
Safari浏览器,使用WebKit内核,它是苹果公司自己的内核,也是苹果的Safari浏览器使用的内核。Webkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎,均是从KDE的KHTML及KJS引擎衍生而来,它们都是自由软件,在GPL条约下授权,同时支持BSD系统的开发。所以Webkit也是自由软件,同时开放源代码。Google Chrome、360极速浏览器以及搜狗浏览器高速模式也使用webkit作为内核。
FireFoxl浏览器,使用 Gecko 内核,Gecko的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。因为这是个开源内核,因此受到许多人的青睐
Opera浏览器,使用Presto内核,这是目前公认网页浏览速度最快的浏览器内核。link是一个由Google和Opera Software开发的浏览器排版引擎,这一渲染引擎是开源引擎WebKit中WebCore组件的一个分支,并且在Chrome(28及往后版本)、Opera(15及往后版本)和Yandex浏览器中使用。
本教程版权归饥人谷_LULU和饥人谷所有,转载须说明来源