首页 >web前端 >html教程 >新手对<meta>的问题_html/css_WEB-ITnose

新手对<meta>的问题_html/css_WEB-ITnose

WBOY
WBOY原创
2016-06-24 12:07:271121浏览

1.用记事本写的【UTF16大头】格式的HTML,但在HTML文件里面才规定的UTF8,浏览器怎么知道要用UTF8模式解码呢?浏览器要读懂的前提就需要解码,但是这个解码方式却写在文件里面,浏览器怎么选择正确的方式呢?

2.为什么放在Head里而不是文档最前面,按理来说 编码方式不是应该比所谓的 文档类型更底层吗?

望大家指导~


回复讨论(解决方案)

如果你的服务器读不懂UTF16大头,那就乱了。

如果你的服务器读懂UTF16大头,那么就有下一步:
这个是告诉(解析html)服务器 的模块要用规定的东西输出。

如果你的服务器读不懂UTF16大头,那就乱了。

如果你的服务器读懂UTF16大头,那么就有下一步:
这个是告诉(解析html)服务器 的模块要用规定的东西输出。
也就是说当用户请求的时候按UTF8编码方式发送?

说错了,下面这说法应该对的吧:

因为你这些东西最终都要放在服务器上的。
是UTF16或UTF8都没关系,关键是你服务器要读的懂。


服务器发送:你发送什么都没关系,关键是浏览器读的懂。
浏览器就是一个HTML syntax解析器。按照HTML syntax的语法。(XML syntax)

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head>

都算前缀吧(我不知到)





安什么发送,服务器不是有个默认值吗?
在php中可这样改
header(content-type:xx)

用户只能说我发送的数据是用这种格式,我能接受的是这种格式,不能要求服务器,用什么格式返回的。

安什么发送,服务器不是有个默认值吗?
在php中可这样改
header(content-type:xx)

用户只能说我发送的数据是用这种格式,我能接受的是这种格式,不能要求服务器,用什么格式返回的。
大概明白了,东西放在服务器上,用什么格式保存无所谓,用户浏览器也无法要求服务器按什么格式发送,但是用户请求网页的时候,浏览器会按文档里明确给出的格式,比如UTF8发送给用户,用户端按UTF8解码,这样对吧?

不是,是给浏览器的HTML syntax解析器用的。解析成dom object. 也就是dom tree.

服务器用什么编码发送,是需要在服务器配置哪里设置的。或用动态语言设置(php .net .java)



不是,是给浏览器的HTML syntax解析器用的。解析成dom object. 也就是dom tree.

服务器用什么编码发送,是需要在服务器配置哪里设置的。或用动态语言设置(php .net .java)
麻烦了你这么久,真不好意思。
不过,有一点我没搞明白:

前提:我以【UTF16大头】格式保存HTML,设置发送的格式是UTF8,里也是UTF8。
服务端:按照你说的,服务器能读懂这个HTML,并且我们自己可以设置这个HTML的发送格式,就是UTF8。

#我的问题在这里#
客户端浏览器:
假设1:用户端浏览器在浏览HTML之前,不知道网页编码方式,所以肯定读不出HTML的内容,自然也就更不会知道里面是什么东西,所以就会乱码;
假设2:用户端浏览器通过解析HTML文档前2个字节,发现是EFBB,即UTF8格式,所以可以解析HTML文件,并读取中的内容,但是因为在中的charset告诉浏览器是UTF8之前,浏览器已经知道了编码格式,所以这个charset信息多余了;

这无论是哪一种方式都说不通啊?

浏览器不知道HTML编码方式,就不知道文档内容,不知道文档内容,就不知道meta里写的什么,不知道meta里写的什么,就不知道该用什么格式解码。

浏览器如果要能知道HTML的编码方式,要么直接解析文件,从文件前2个字节读出EFBB,发现是UTF8编码方式;要么服务器已经把UTF8编码方式告诉客户端浏览器了,那还要里的charset干嘛?

我刚接触HTML几天,如果问题过于低级,请见谅。

你先搜下   binary text editor 
我搜到http://www.editpadpro.com/hexadecimal.html  应该可以用的。

注意text,  和  binary.

-》HTML是放在服务器上的,是要先经过服务器读的。
HTML   让记事本  让服务器读   读的是binary串   你说的头是binary串的头。这个头他能读懂,就开始按照他设置的转换程序转化了,变成我们能看懂的 text   .

-》web服务器发送了.它也是先发送个头,可通过web debug工具来看。
浏览器通过分析发过来的头,分析到,后面来的是一段 html,确定用HTML syntax分析器对他处理。

-》HTML syntax分析器,他也有自己固定的语法。

你先搜下   binary text editor 
我搜到http://www.editpadpro.com/hexadecimal.html  应该可以用的。

注意text,  和  binary.

-》HTML是放在服务器上的,是要先经过服务器读的。
HTML   让记事本  让服务器读   读的是binary串   你说的头是binary串的头。这个头他能读懂,就开始按照他设置的转换程序转化了,变成我们能看懂的 text   .

-》web服务器发送了.它也是先发送个头,可通过web debug工具来看。
浏览器通过分析发过来的头,分析到,后面来的是一段 html,确定用HTML syntax分析器对他处理。

-》HTML syntax分析器,他也有自己固定的语法。
谢谢这么耐心的答复 :)

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn