• 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后缀。

  • 相关阅读:
    [ZOJ 3622] Magic Number
    SGU 134.Centroid(图心)
    SGU 223.Little Kings
    C++ IO 详细用法
    POJ2632 Crashing Robots 解题报告
    POJ1068 Parencodings 解题报告
    POJ3295 Tautology 解题报告
    POJ2586 Y2K Accounting Bug 解题报告
    POJ1328 Radar Installation 解题报告
    POJ3728 The merchant解题报告
  • 原文地址:https://www.cnblogs.com/zengen/p/1860681.html
Copyright © 2020-2023  润新知