`
SunnyYoona
  • 浏览: 367066 次
社区版块
存档分类
最新评论

[IT]HTML网页源码的字符编码(charset)解释

 
阅读更多

当你通过浏览器,打开某个网站,即某个url地址的时候,你所能正常看到网页的内容,各种文字,都可以正常显示,且没有显示乱码。

此过程,涉及到,浏览器帮你正确解析HTML源码,其中涉及到HTML网页源码的字符编码处理方面的问题。

和字符编码处理相关的大概逻辑是:

1.浏览器访问对应的url地址,并获取对应的HTML(或者,以及,其他的css,javascript等)网页源码

2.浏览器识别解析HTML源码内容

其中包含了解析HTML的头部(head),找到对应的charset和Content-type

head中把Content-type设置为“text/html”。head让浏览器将该响应内容以HTML形式呈现,而不是以文件形式下载它。

然后把根据charset所指示的字符编码类型,去解码对应的HTML内容,显示对应的文字,以保证不是乱码,可以正确的显示文字信息;

举个例子:

当我们通过浏览器,去打开对应的url地址:http://sports.sohu.com/

浏览器可以正常显示对应网页内容:


而此时内部发生的过程是:

1.浏览器去访问url地址:http://sports.sohu.com/去获得对应的HTML源码。(中间很有很多处理过程,省略,具体参考:当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

2.然后解析HTML源码并显示给用户

其中包括了解析HTML的head,知道content=text/html,charset=gb2312,然后用gb2312编码格式去解码,HTML形式呈现,然后就可以正常显示HTML中的内容,确保不是乱码了。


上面截图就是网页源代码,我们可以很清楚的看到我们要的信息。


注意:

1.之前就看到某处说过,有个别的html网页本身做的不规范,导致本身自己声明的是某种编码类型,

但是实际上,并不全是该类型的编码,导致你去按照其所声明的编码去解析,有时候仍会出现乱码。

比如,其html中明明写的是charset=gb2312,但是实际上,其部分字符是属于GBK的,导致你按照gb2312去解码,有些字符仍会是乱码,

而安装gbk去解码,就全都正常显示了,没有乱码了。即实际上应该是charset=gbk。


常见的HTML编码类型:

国内的网站,尤其是以前建的,好像很多还是GB2312(charset=gb2312),或者是GBK(charset=gbk)

但是越来越多的,都是采用兼容性更好的,包含字符更多的UTF-8编码的了(charset=utf-8)

国外的完整,如果只是某种语言的,比如英文的,好像也有采用iso8859-1的(charset=iso8859-1),同样,更多的网站,还是采用的是utf-8的。

总结:

  • 国内外的多数网站,都是采用charset=utf-8
  • 部分国外网站采用charset=gb2312或charset=gbk
  • 部分国外网站采用某种自己所属语言的编码,比如charset=iso8859-1







分享到:
评论

相关推荐

    Java字符集编码简记

    NULL 博文链接:https://joard.iteye.com/blog/403031

    NChardet文本文件编码探测库源码,C#,txt文件编码自动探测

    NChardet文本文件编码探测库源码,C#,txt文件编码自动探测 用于自动探测TXT文本文件编码,支持GB2312、UTF-8、ASCII等几乎所有主流编码的探测,使用方法如下: static public Encoding GetEncoding(string bookPath...

    SQLite C# 多字符集支持

    SQLite C# 多字符集支持示例程序。 近期有个项目要对接海康道闸设备,海康...没办法,只能找源码进行修改,令其可支持多字符集。 示例程序中提供的 System.Data.SQLite.dll 环境是 .Net framework 4.5,支持多字符集。

    汉字点阵生成源码 两种方式生成 适合新手学习

    newfont.CreateFont(16,0,0,0,0,0,0,0,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,strFontName); //根据字体的大小和名称创建一个字体,m_...

    文本文件编码转换工具 gbk utf8 gb2312

    charset=utf-8"></HEAD> "说明此文件编码为utf8" 4)在 mysql_select_db("表名",$id); 后面加入一行 mysql_query("set names utf8;"); <!-----说明数据库连接也用utf8编码-----> 5)*.php 文件在存盘的时候也以 ...

    利用Java代码实现无字符+中文转换为全中文的代码

    大多源码来自互联网,本人只做部分正和 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io...

    最新支付宝手机网站支付源代码,安全可靠

    功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并且对其做URLENCODE编码 输入:Array sPara 需要拼接的数组 输出:String 拼接完成以后的字符串 Function FilterPara(sPara) 功能:...

    深入浅出Hibernate源码

    charset=utf-8"%> 假若在您的项目中,必须使用GBK编码,则在以上的各个地方,都需要把UTF-8更换为GBK方可正常使用。 版本更新 ----------- v1.2 (PLAN,TBD) * 转换到JTA * 给出一个脱离DAO模式的例子 * 给出...

    谷歌浏览器ipad版

    charset=utf-8"></HEAD> "说明此文件编码为utf8" 4)在 mysql_select_db("表名",$id); 后面加入一行 mysql_query("set names utf8;"); <!-----说明数据库连接也用utf8编码-----> 5)*.php 文件在存盘的...

    xmljava系统源码-kit:java精华工具类集锦

    字符集工具,获取任意文本文件的字符编码 common.model 通用型RESTFUL接口返回对象 compress 字节压缩和解压缩工具 controllerpattern Controller模式框架的通用型脚手架,包扫描注入模式的利器 converter 通用对象...

    2021最新-Java NIO视频教程-视频教程网盘链接提取码下载 .txt

    教程内容涵盖:阻塞和非阻塞IO、Channel通道、Buffer缓冲区、Selector选择器、Pipe管道、FileLock文件锁,以及Path、Files、异步FileChannel和Charset字符编码等,并通过一个多人聊天室的综合案例,把所有的NIO知识...

    Jsp文件上传下载(工具类源码)

    // 设置字符编码为UTF-8, 统一编码,处理出现乱码问题 response.setCharacterEncoding("UTF-8"); // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload DiskFileItemFactory dfif = new ...

    风声无组件上传类 v2.1.rar

    v2.1更新: 改用v2.08 Beta 1上传算法,对大文件上传效率更高、占服务器资源更小; 突破IIS v6.0默认200K大小限制,解决...增加Charset属性,便于国际化支持不同字符集编码; 修改发现的所有Bug; 许多细微优化;

    MySQL数据库系统.docx

    general_ci --with-extra-charsets=gbk,gb2312 --prefix:指定将mysql数据库程序安装到哪个目录 --with-charset:指定默认使用的字符集编码 --with-collation:指定默认使用的字符集校对规则 --with-extra-charset:...

    mysql 按中文字段排序

    出现这个问题的原因是因为MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象。 解决方法: 对于包含中文的字段...

    EasyASP 2.1 UTF-8.rar

    新增Easp.Charset属性,用于设置Easp.Include方法和Easp.getInclude方法载入文件的编码。 新增Easp.ConfirmUrl方法,用于输出确认信息框并根据选择进行Url跳转。 新增Easp.HtmlFormat方法,用于对html文本进行...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    #PCDATA 包含字符或文本数据 (#PCDATA)> 元素MYFILE包含一个文本数据 #PCDATA, element-name 包含文本和其它子元素 (#PCDTATA,TITLE)> MYFILE元素必须包含文本和TITLE子元素 , 使用逗号分隔排序 (TITLE,AUTHOR,...

    js使用小技巧

    查看源码 查看网页源代码 onclick="window.location = "view-source:"+ "http://www.csdn.net/""> 关闭输入法 自动全选 ()"> ENTER键可以让光标移到下一个输入框 (event.keyCode==13)event.keyCode=9"> ...

    EasyASP 2.1 GB2312

    新增Easp.Charset属性,用于设置Easp.Include方法和Easp.getInclude方法载入文件的编码。 新增Easp.ConfirmUrl方法,用于输出确认信息框并根据选择进行Url跳转。 新增Easp.HtmlFormat方法,用于对html文本进行...

    疯狂JAVA讲义

    9.6.4 使用MessageFormat处理包含占位符的字符串 349 9.6.5 使用类文件代替资源文件 350 9.6.6 使用NumberFormat格式化数字 350 9.6.7 使用DateFormat格式化日期 352 9.7 本章小结 355 本章练习 355 第10章 ...

Global site tag (gtag.js) - Google Analytics