澳门新葡萄京官网首页ASP.NET 网页也应该在 meta 中指定 charset=UTF

用微软的 Visual Web Developer 新建的 ASP.NET 网页,默认情况下,head
标签中只有 title,没有用于指明编码的 meta。

在windows操作系统上使用IE作为浏览器时。常常会发生这样的问题:在浏览使用UTF-8编码的网页时,浏览器无法自动侦测(即没有设定“自动选择”编码格式时)该页面所用的编码。
即使网页已经声明过编码格式:

澳门新葡萄京官网首页 ,在绝大多数情况下,包括某些专业文章中,字符集和编码都统称为编码,这是因为一个字符集往往对应一种编码。但是在程序中,我们来不得半点马虎,我们应该清楚地知道字符集和编码有什么区别。以
ASP.NET 为例,Response.Charset 和 Response.Output.Encoding(只读)中的
Charset 和 Encoding 有什么区别呢?

这种情况一般不会出错,在 IE 6、IE 8 中直接访问网页都会认得到编码为
UTF-8(ASP.NET 的默认编码)。

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″
/>

Charset 是字符集,Encoding 是编码。

但是在另外一种情况下,我遇到的是在幻灯片中通过超链接打开网页,该网页再自动跳转到登录页,出错认不到编码的情况,将编码误认为
GB2312,这就造成了乱码,要刷新一下才行。这种情况在 IE 6 中存在,在 IE 8
中不存在。

由此造成某些含有中文UTF-8编码的页面产生空白输出。

  • 字符集即字符的集合,规定了在这些集合里面有哪些字符,每一个字符都有一个编号(一个整数),但这只是编号不是编码。
  • 编码就规定了一个编号如何与二进制交互。

所以为了获得更好的兼容性,建议在 head 标签中指明 meta:

如果使用的是Mozilla、Mozilla
浏览器、Sarafi的浏览器这不会造成这个问题。这是由于IE解析网页编码时以HTML内的标签优先,而后才是HTTP
header内的讯息;而mozilla系列的浏览器则刚刚相反。

我们大多数人最先接触到的字符集是 1963 年的
ASCII,其中的每一个字符只需要用一个字节来表示就可以了。但世界上有许多种语言,像亚洲文字,比如中文,常用汉字就几千个,仅用一个字节来表示显然是不够的,假如我们使用两个字节。

<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″
/>

由于UTF-8为3个字节表示一个汉字,而普通的GB2312或BIG5是两个。页面输出时,由于上述原因,使浏览器解析、输出<title></title>的内容时,如果在</title>前有奇数个全角字符时,IE把UTF-8当作两个字节解析时出现半个汉字的情况,这时该半个汉字会和</title>的<结合成一个乱码字,导致IE无法读完<title>部分,使整个页面为空百输出。而这个时候如果察看源文件的话,会发现实际上整个叶面全部已经输出了。

那么问题就来了,为什么我们要把两个字节看成是一个汉字的编号呢?为什么我们不把两个字节看成
ASCII 字符集的两个编号呢?为了解决此问题,就得使用编码来标识了。

相关阅读

因此最简单的解决办法是在网页文件的<head></head>标签中一定要把字符定义

还有一个问题,编号(整数)1234 在字符集 A 中代表“千”,1234 在字符集 B
中代表“一”,那么 1234 究竟代表什么字呢?这就得明确字符集了。

  • CodePage、ContentEncoding、Charset、ContentType、meta charset
    有什么区别?

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″
/>

浏览器可以自动识别使用哪个字符集,一般说来它们使用 HTTP 头部的
Content-Type 标明的字符集,如果没有向 HTTP 头部发送该信息,一般参考使用 HTML 的 head 标签中的 <meta
http-equiv=”Content-Type” content=”text/html; charset=gb2312″
/>,为什么是参考使用呢?因为现在浏览器都比较聪明,如果发现这里用错了,一般会给予纠正。

放在<title></title>之前。

我们做网页时,如果指定的 Charset 是
GB2312,那么就不应该在网页中出现繁体字,因为 GB2312
标准只有几千个简体的中文字。如果我们的网页编码是
UTF-8,我们就不要指定字符集是 GB2312,因为虽然 UTF-8 编码对应的 UTF-8
字符集包含了 GB2312 的字符,但同一个字符在两个字符集中的编号不一样。


对于我们中文简体网页,一般来说有两种搭配:

=====================

  • 一种是字符集是 GB2312,编码使用
    ANSI。占用磁盘空间最少,网络传输效率最高。
  • 一种是字符集是 UTF-8,编码使用
    UTF-8。虽然占用磁盘空间大,传输效率略低,但因为兼容面广,在应用 Ajax
    以及包含多种语言文字时使用方便。鉴于此原因,现在许多网页开发工具都默认使用
    UTF-8 来保存网页,比如 Visual Web
    Developer。

UTF-8网页乱码问题解决:
<%@codepage=”65001″%>
< http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
一个也不能少
另外,文件要存为utf-8格式的
还有,程序不能出错,嘿嘿
要是有错误的程序,那么刚打开的时候正常的,刷新了就乱码了
这里说的出错时不会使整个页面不显示的出错。
1,<%@codepage=”65001″%>
2,< http-equiv=”Content-Type” content=”text/html;
charset=UTF-8″>
3,Session.CodePage = 65001
4,文件存成 UTF-8
我来说说吧,这个我比较有经验,呵呵

2,< http-equiv=”Content-Type” content=”text/html;

charset=UTF-8″>

这条比较重要,也比较常见,这个决定了浏览者浏览器选择哪一种内码来访问你的网页。

4,文件存成 UTF-8
如果你用中文输入法,网页里面出现中文,这一条就比较重要了.因为我们用普通输入法输入的文字不是UTF格式的,所以要重新保存成
UTF-8格式。

所有从数据库里读的中文字都是乱码

1,<%@codepage=”65001″%>
出现这种事情,请加上这句话,其实数据库跟内码没什么关系,关键是ASP程序用什么内码去传输你的数据,加上这句话,就强制ASP用UTF来传输数据。
尝试在<%@codepage=”65001″%>下加一行:
<%Session.CodePage=65001%>

utf-8 网页不显示+utf-8网页乱码的问题一般就可以解决了

发表评论

电子邮件地址不会被公开。 必填项已用*标注