Heim  >  Artikel  >  Web-Frontend  >  新手对<meta>的问题_html/css_WEB-ITnose

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

WBOY
WBOYOriginal
2016-06-24 12:07:271084Durchsuche

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分析器,他也有自己固定的语法。
谢谢这么耐心的答复 :)

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn