`
#rethink#
  • 浏览: 45044 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Content-Type问题总结

阅读更多

web服务器在向浏览器发送任何内容的时候,都会先发送相应的header头。无论是html文本,还是gif,jpg等文件。

header信息里面一般会包含:

Date,Server,Last-Modified,Etag,Content-Length,Content-Type等等信息。

深入了解header里面的信息很有必要,因为这是浏览器是否使用浏览器缓存文件,及能否正确解析文件的基础。

 

最近遇到页面的显示问题,都是和Content-Type相关的。

问题1:charset,页面要使用shift_jis编码。

因为web服务器默认的Charset不是shift_jis,这时候即使你的html里面的meta正确设置了:

<meta http-equiv="content-type" content="application/xhtml+xml; charset=Shift_JIS" />

页面还是会显示乱码。原因是web服务器发送的header信息为:

Content-Type:text/html; charset=utf-8

解决办法1:

在apache中进行配置:AddDefaultCharset shift_jis

即设置文本的默认编码为shift_jis。

解决办法2:

通过php设置:header('

Content-Type: text/html; charset=shift-jis');

 

问题2:页面规范为xhtml 1.0

首先,xhtml 1.0对应的content type为application/xhtml+xml。因此页面中meta设置如下:

<meta http-equiv="content-type" content="application/xhtml+xml; charset=Shift_JIS" />
但是即使如此,发现在手机模拟器中(这是个手机网站项目),页面的样式无法正确显示。

问题的原因还是出现在header信息中的Content-Type上。通过YSlow查看得到:

Content-Type:

text/html; charset=shift-jis

这边的 text/html 会导致手机浏览器无法按照XHTML1.0解析html页面。

解决方法1:

修改apache配置。

apache关于文件类型的content type定义都放在:mime.types文件中。 在mime.types中可以看到:

text/html   html htm

这边的意思是:对于.html和.htm格式的文件,发送的content type为text/html ,因此我们只要修改为:

application/xhtml+xml  html htm

即可解决在 .html 和 .htm文件中解析xhtml 1.0问题,但这会影响apache的全局配置。为了消除对其他项目的影响,因此在该项目的虚拟目录增加设置:

AddType application/xhtml+xml html

这样子,对于 .html 格式的文件,服务器发送的content type就都是“application/xhtml+xml ”了,如果要支持其他格式的文件,设置的方法也类似。

 

解决方法2:

将使用XHTML1.0规范的静态文件都改为 .xhtml 或者 .xht 格式。因为事实上apache中的mime.types已经有如下定义:

application/xhtml+xml  xhtml xht

 

解决方法3:

通过php设置:

header('

Content-Type: application/xhtml+xml; charset=shift-jis');

 

总结:浏览器解析页面的时候,优先参照的是header头信息里面的设置,之后才是html页面中的meta设置。如果出现页面乱码或者文档无法正常解析,应该从header头信息里面去找找原因。

如何查看浏览器接收到的文件的header信息呢?推荐使用Yslow!

分享到:
评论

相关推荐

    网页编写代码大全总结

    META HTTP-EQUIV=”Content-Type” CONTENT=”text/html; charset=gb2312″&gt; 繁体中文:&lt;META HTTP-EQUIV=”Content-Type” CONTENT=”text/html; charset=BIG5″&gt; 英 语:&lt;META HTTP-EQUIV=”Content-...

    PHP header()函数常用方法总结

    //Atom复制代码 代码如下:header(‘Content-type: application/atom+xml’);//CSS复制代码 代码如下:header(‘Content-type: text/css’);//Javascript复制代码 代码如下:header(‘Content-type: text/javascript’)...

    HTML基本标签属性总结

    &lt;meta http-equiv="content-type" content="text/html" charset="gb2312"&gt; 4种块结构:div-ul(ol)-li 导航菜单 div-dl-dt-dd 图文混编 table-tr-td 规整数据 form-table-tr-td 表单布局 块标签:基本块级标签 ...

    解决JSP到MySQL数据库中文乱码问题

    遇到了这个问题, 按照一定的顺序解决了, 来这里总结一下, 希望能帮助大家.  咱们从前台到后台的顺序来解决.  1. JSP  这里需要设置一下JSP页面的统一编码格式:  打开Eclipse-window-&gt;preferences. 根据...

    PHP 中文乱码解决办法总结分析

    meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″&gt;,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。 b. 如果欲使用utf-8编码,那么php要输出头:header...

    php页面,mysql数据库转utf-8乱码,utf-8编码问题总结

    1.在代码开始出加入一行: header(“Content-Type: text/html;charset=utf-8”); 2.PHP文件编码问题 点击编辑器的菜单:“文件”-&gt;“另存为”,可以看到当前文件的编码,确保文件编码为:UTF-8,如果是ANSI,需要将...

    PHP中Header使用的HTTP协议及常用方法小结

    本文实例总结了PHP中Header使用的HTTP协议及常用方法。分享给大家供大家参考。具体方法如下: 复制代码 代码如下:&lt;?PHP function https($num) { $http = array ( 100 =&gt; “HTTP/1.1 100 Continue”, 101 =&gt; ...

    关于zend studio 出现乱码问题的总结

    meta http-equiv=”Content-Type” content=”text/html; charset=utf8“/&gt;,2如果是 x.php 的文件需要在头部加header(“content-type:text/html;charset=utf-8”).总的意思就是告诉浏览器我要utf-8的编码来显示...

    ajax乱码解决汇总

    ajax乱码解决总结 第一,javascript沿用java的字符处理方式,内部是使用unicode来处理所有字符的, 第二,utf-8是每个汉字(unicode字符)用3个字节来存储。 第三,用utf-8来send数据是不会出现乱码的,是后台程序...

    php上传文件常见问题总结

    把php上传文件时经常碰到的几个问题总结一下吧,以后用到时不用再去找了。 1.先做个最简单的上传文件 复制代码 代码如下:  &lt;html&gt;  &lt;head&gt;  &lt;meta http-equiv=”Content-Type” content=”text/...

    PHP解决中文乱码

    在php中,中文乱码非常头疼,很麻烦,所以根据在编程的经验,总结以下方法(以utf_8为例), 1.php中在头部header设置编码方式 header(Content-type:text/html;charset=utf-8); 2.php中用iconv转码 echo iconv(GB...

    jquery获取input type=text中的值的各种方式(总结)

    实例如下: &lt;!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN ...&lt;... &lt;...meta http-equiv=Content-Type content=text/html; charset=gb2312 /&gt; &lt;script src=jquery-1.5.1

    详解照片瀑布流效果(js,jquery分别实现与知识点总结)

    看了网上的瀑布流教程,自己跟着写了遍,然后总结了下知识点 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=Content-Type content=text/html; charset=UTF-8 /&gt; [removed][removed] ...

    清除js缓存的多种方法总结

    在客户端有一个HTML文件,用来提交输入信息,问题在于:每次按刷新时,...meta http-equiv="content-type" content="no-cache, must-revalidate" /&gt; &lt;meta http-equiv="expires" content="Wed, 26 Feb 1997 08

    因str_replace导致的注入问题总结

    研究了下replace的注入安全问题。...meta http-equiv=Content-Type content=text/html; charset=utf-8/&gt; &lt;/head&gt; &lt;body&gt; &lt;?php $x=$_GET['x']; $id=str_replace(addslashes($_GET['y']),'',a

    ajax中文乱码的各种解决办法总结

    有一种解决办法就是使用encodeURIComponent加上修改 Content-Type 为 application/x-www-form-urlencoded” 来把数据统一编码成 url 格式,当然,也可以指定编码,如:“application/x-www-form-urlencoded;...

    javascript实现回车键提交表单方法总结

    本文实例总结了javascript实现回车键提交表单方法。...meta http-equiv=”content-type” content=”text/html;charset=utf-8″ /&gt; [removed]  [removed] = function(ev){  ev = ev || window.event;  if(ev.keyC

    JS常用表单验证方法总结

    meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″&gt; &lt;title&gt;表单验证&lt;/title&gt; [removed] function check_1(param){//不为空 if(param==””||param==null){r

    javascript常见用法总结

    meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ /&gt; &lt;title&gt;javascript的编码和解码&lt;/title&gt; [removed] function gel(id) { return document.getElementById(id); } ...

    JavaScript实现经纬度转换成地址功能

    在webAPP开发过程中,需要将返回的经纬度转换成中文地址,一番折腾后得以实现,总结如下 原理分析: 百度地图API提供了一个JS库,我们只需要用这个接口就可以实现转换功能,这里我写一个简单的demo,与君共勉 &lt;...

Global site tag (gtag.js) - Google Analytics