浏览器正确理解和使用GBK及UTF-8(UTF-8 + BOM)网页编码
网页编码英文译为web page encoding。是在网页中指定其特定的字符编码格式的库。
GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。
GBK的文字编码是用双字节来表示的。即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包括所有中文字符,是国家编码,通用性比UTF8差,只是UTF8占用的数据库比GBK大。
UTF-8:Unicode TransformationFormat-8bit,同意含BOM,但通常不含BOM。
是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包括全世界全部国家须要用到的字符,是国际编码。通用性强。UTF-8编码的文字能够在各国支持UTF8字符集的浏览器上显示。
假设是UTF8编码,则在外国人的英文IE上也能显示中文。他们无需下载IE的中文语言支持包。
UTF-8版本号尽管具有良好的国际兼容性,但中文须要比GBK/BIG5版本号多占用50%的数据库存储空间,因此并不是推荐使用,仅供对国际兼容性有特殊要求的用户使用。
简单地说:对于中文较多的站点,适宜用GBK编码节省数据库空间。对于英文较多的站点,适宜用UTF-8节省数据库空间。
GBK、GB2312等与UTF8怎样转换?GBK、GB2312等与UTF8之间都必须通过Unicode编码才干相互转换:GBK、GB2312——Unicode——UTF8。UTF8——Unicode——GBK、GB2312。使用Windows记事本的“另存为”,能够在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。
怎样让浏览器正确识别网页编码?一般在网页中都要有例如以下一句:<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,指示此网页的字符集编码是GB2312。
(或者UTF-8)
页面有时候指定了编码为什么有时会出现乱码?这可能是页面申明编码与文件本身编码不一致。很多其它时候是以错误编码打开页面然后保存导致的。或者是用某些FTP软件直接在线改动文件,比方CuteFTP,因为软件编码配置错误而导致转换错了编码。这时候使用window的记事本打开,用“另存为”保存为相应的编码就可以解决这个问题。
在windows操作系统上使用IE作为浏览器时,经常会发生这种问题:在浏览使用UTF-8编码的网页时,浏览器无法自己主动识别该页面所用的编码,即使网页已经声明过编码格式:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />,由此造成某些含有中文UTF-8编码的页面产生空白输出。假设使用的是Firefox、Sarafi的浏览器这不会造成这个问题。
这是因为IE解析网页编码时以HTML内的标签(title)优先。而后才是HTTP
header内的讯息,而mozilla系列的浏览器则刚刚相反。
因为UTF-8为3个字节表示一个汉子,而普通的GB2312或BIG5是两个。
页面输出时,因为上述原因,使浏览器解析、输出<title></title>的内容时,假设在</title>前有奇数个全角字符,IE把UTF-8当作两个字节解析时出现半个汉字的情况,这时该半个汉字会和</title>的<结合成一个乱码字。导致IE无法读完<title>部分,使整个页面为空百输出,而这个时候假设察看源文件的话,会发现实际上整个页面所有已经输出了,但浏览器不显示内容。最简单的解决的方法是把<meta
http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 放在<title></title>之前。
浏览器正确理解和使用GBK及UTF-8(UTF-8 + BOM)网页编码的更多相关文章
- Js位置与大小(1)——正确理解和运用与尺寸大小相关的DOM属性
在web开发中,不可避免遇到要计算元素大小以及位置的问题,解决这类问题的方法是利用DOM提供的一些API结合兼容性处理来,所有内容大概分3篇左右的文章的来说明.本文作为第一篇,介绍DOM提供的与尺寸大 ...
- IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...
- IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token
本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...
- 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生
[转].NET(C#):浅谈程序集清单资源和RESX资源 目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...
- 【转】正确理解PHP程序编译时的错误信息
我们编写程序时,无论怎样小心谨慎,犯错总是在所难免的.这些错误通常会迷惑PHP编译器.如果开发人员无法了解编译器报错信息的含义,那么这些错误信息不仅毫无用处,还会常常让人感到沮丧. 编译PHP脚本时, ...
- 如何正确理解正则表达式中的分隔符 \b
前言:好久不见,博客园. 最近在学习研究regex,其中有个特迷惑自己的知识点是分隔符 ( word boundary) [\b] (注:为了方便,后文都以[]来包含字符,并不是reg规则里面的[] ...
- Java进阶(七)正确理解Thread Local的原理与适用场景
原创文章,始自发作者个人博客,转载请务必将下面这段话置于文章开头处(保留超链接). 本文转发自技术世界,原文链接 http://www.jasongj.com/java/threadlocal/ Th ...
- IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理
1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以“人”为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是整个IM系统都是以长 ...
- 正确理解CAP定理
前言 CAP的理解我也看了很多书籍,也看了不少同行的博文,基本每个人的理解都不一样,而布鲁尔教授得定义又太过的简单,没有具体描述和场景案例分析.因此自己参考部分资料梳理了一篇与大家互相分享一下. 标题 ...
随机推荐
- 用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库
小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢no ...
- VPN连接机器不再输入密码以及Pin码方法
连接机器不输入密码 #!/usr/bin/env expect spawn ssh guosong@xx_ip; expect "*password*"; send &quo ...
- Eclipse的几个常用快捷键
键盘操作 功能 Alt + / 语句或变量名自动补全 Ctrl + Shift + F 语句格式化 Ctrl + / 单行注释(或取消单行注释) Ctrl + Shift + / 多行注释 ...
- 9. 使用ZooKeeper Java API编程
ZooKeeper是用Java开发的,3.4.6版本的Java API文档可以在http://zookeeper.apache.org/doc/r3.4.6/api/index.html上找到. Ti ...
- Ionic3学习笔记(十一)实现省市区三级联动
本文为原创文章,转载请标明出处 目录 安装 ion-multi-picker 导入 app.module.ts 创建 provider 创建 page 一个坑 更多 效果图 1. 安装 ion-mul ...
- YOLO 算法框架的使用一(初级)
YOLO官方框架使用C写的,性能杠杠的,YOLO算法,我就不做过多介绍了.先简单介绍一下这个框架如何使用.这里默认是yolo2,yolo1接近过时.环境 推荐ubuntu 或者centos YOLO是 ...
- webpack 3.X学习之JS压缩与打包HTML文件
js压缩 webpack自带一个插件uglifyjs-webpack-plugin来压缩js,所以不需要再次安装,当一切都准备妥当,引入uglifyjs-webpack-plugin模块: const ...
- 分水岭 golang入坑系列
第三式开篇语有些负面, 所以这里就不贴了.有兴趣的自己可以去看看 https://andy-zhangtao.gitbooks.io/golang/content/ .怒发冲冠,意气之作.看完就完了, ...
- Spring Boot 的Maven多模块开发web项目使用外部容器进行部署
Spring Boot中自带有Tomcat容器,因此Spring Boot项目只需要运行main函数,就可以运行,但是以往的web项目,我们习惯于使用自己安装的Tomcat运行或者使用Tomcat.J ...
- 常用的redis命令
常用的redis命令 http://www.runoob.com/redis/redis-tutorial.html 菜鸟教程 Cmd连接有密码的redis:$ redis-cli -h ho ...