首页软件教程浏览器如何获得css文档编码的?
浏览器如何获得css文档编码的?

浏览器获取css文档编码相对于获取html文档编码要复杂多了,它可以设置编码的地方有ReponseHeader的Content-type字段设置编码,link标签可以设置charset属性也可以设置,还有css文档也可以设置编码,最后还有一个默认的编码文档。

影响

css文档如果编码识别错误,会有什么影响?对于英文字符都能整常识别的,但是对中文字符会是显示成乱码,这个主要是使用了中文字体的,页面显示的中文字体是英文字体(内容还是中文,我是说显示的字体变化)。

浏览器是获取css文档编码的顺序是怎样的呢?

根据 [1]? CSS 2.1 规范的描述,应按照以下优先级来确定一个外部CSS文件的编码:

1.HTTP 响应头中 "Content-Type" 字段的 "charset" 参数指定的编码。

2.BOM 以及/或者 @charset 定义的编码。

3.<link charset="">或其他链接机制提供的元数据(如果有的话)指定的编码。

4.引入该 CSS 文件的 HTML 或另一个 CSS 文件(如果有的话)中已确定的编码。

5.如果以上几步都没能确定编码,则假定其编码为 UTF-8。


发一段从bom中获取编码的方法(C#):

/// <summary>
/// 从字节流判断编码(返回null是不能判断出编码)
/// </summary>
/// <param name="bt">输入字节流</param>
/// <returns></returns>
internal static string GetEncodingByByte(byte[] bt)
{
	//带BOM的utf-8
	var utf8 = new byte[] { 0xEF, 0xBB, 0xBF };
	if (bt[0] == utf8[0] && bt[1] == utf8[1] && bt[2] == utf8[2])
	{
		return "utf-8";
	}

	//UTF-32-BE
	var utf32Be = new byte[] { 0x00, 0x00, 0xFE, 0xFF };
	if (bt[0] == utf32Be[0] && bt[1] == utf32Be[1] && bt[2] == utf32Be[2] && bt[3] == utf32Be[3])
	{
		return "utf-32";
	}

	//UTF-32-LE
	var utf32Le = new byte[] { 0xFF, 0xFE, 0x00, 0x00 };
	if (bt[0] == utf32Le[0] && bt[1] == utf32Le[1] && bt[2] == utf32Le[2] && bt[3] == utf32Le[3])
	{
		return "utf-32";
	}

	//UTF-32-2143
	var utf322143 = new byte[] { 0x00, 0x00, 0xFF, 0xFE };
	if (bt[0] == utf322143[0] && bt[1] == utf322143[1] && bt[2] == utf322143[2] && bt[3] == utf322143[3])
	{
		return "utf-32";
	}

	//UTF-32-3412
	var utf323412 = new byte[] { 0xFE, 0xFF, 0x00, 0x00 };
	if (bt[0] == utf323412[0] && bt[1] == utf323412[1] && bt[2] == utf323412[2] && bt[3] == utf323412[3])
	{
		return "utf-32";
	}

	//UTF-16-BE
	var utf16Be = new byte[] { 0xFE, 0xFF };
	if (bt[0] == utf16Be[0] && bt[1] == utf16Be[1])
	{
		return "utf-16";
	}

	//UTF-16-LE
	var utf16Le = new byte[] { 0xFF, 0xFE };
	if (bt[0] == utf16Le[0] && bt[1] == utf16Le[1])
	{
		return "utf-16";
	}

	return null;
}
软件应用:前端模板下载;开发设计;SEO优化;离线浏览网页。备注:本软件不是黑客程序,不能下载后台数据!
免责声明:服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利,通过使用本站工具随之而来的风险与本软件无关。
Copyright © 2019-2024 小飞兔软件 All Rights Reserved 粤ICP备19111427号-2
教程资讯 用户手册 网站专题