Heim > Artikel > Web-Frontend > 新手对<meta>的问题_html/css_WEB-ITnose
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分析器,他也有自己固定的语法。
谢谢这么耐心的答复 :)