zoukankan      html  css  js  c++  java
  • utf8签名与不签名的区别

    二者的区别:当带签名的UTF-8编码内容被浏览器解析时,浏览器直接根据签名即可判断出使用UTF-8编码来进行解析,当不带签名时,浏览器会根据内容的编码来进行判别。简而言之,带签名的将更容易被浏览器以正确的编码方式进行解析。

    最近开发的过程中碰到一个很郁闷的问题,一个站点中即有.aspx页面,也有.shtml页面,它们都引用一个公共的头文件,例:<!--#include file="Html/header.htm"-->,这时问题来了。

    1> .aspx、.shtml、header.htm页面都采用utf-8带签名编码,此时.aspx页面正常,.shtml页面顶部多出一片空白部分

    2> .aspx、.shtml页面采用utf-8带签名编码,header.htm采用utf-8不带签名编码,此时.shtml页面正常,.aspx页面出现乱码

    3> .aspx、.shtml、header.htm页面采用utf-8不带签名编码,web.config中设置网站编码为utf-8(此项很重要,如果不配置,会出现乱码),此时一切正常

    说到这儿,也许大家认为按照第三种方式问题就解决了,其实不然,大家知道,VS的默认编码是UTF-8带签名的,之所以采用这种编码自然是有它的好处的,文章最开始已经对签名与不签名的区别进行描述了,显而易见,带签名编码是主流。

    最后总结:到底是什么原因导致带签名的.shtml引用一个带签名的html头文件时会出现上面多出一段空白的现象,最后发现问题之所在,IIS中解析.shtml的DLL为C:\WINDOWS\system32\inetsrv\ssinc.dll,而解析.aspx的DLL为C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,由于两个DLL在解析utf-8带签名编码文件时的差异,导致了上面问题的出现。

    如果碰到上述问题怎么解决呢?两种解决方案,第一:弄两个头部引用文件(编码分别为utf-8及utf-8带签名),分别应用于.ASPX(utf-8带签名)及.SHTML(UTF-8);第二:将所有页面均使用.aspx后缀。

  • 相关阅读:
    Python入门11 —— 基本数据类型的操作
    Win10安装7 —— 系统的优化
    Win10安装6 —— 系统的激活
    Win10安装5 —— 系统安装步骤
    Win10安装4 —— 通过BIOS进入PE
    Win10安装2 —— 版本的选择与下载
    Win10安装1 —— 引言与目录
    Win10安装3 —— U盘启动工具安装
    虚拟机 —— VMware Workstation15安装教程
    Python入门10 —— for循环
  • 原文地址:https://www.cnblogs.com/zengen/p/1860681.html
Copyright © 2011-2022 走看看