当前位置:首页>>开发编程>>ASP>>新闻内容  |虚拟主机 主机托管
ASP下UTF-8页面乱码的解决方法
作者: 发布时间:2007-5-27 11:12:28 | 【字体:

  为什么在ASP里指定了codepage为65001还经常显示乱码。才子在这里将这个问题详细解释一下,以免很多朋友再走弯路,甚至排斥UTF-8。

  如果你还不知道UTF-8是什么东东,那才子建议你先去搜索一下UTF-8的相关资料吧。

  UTF-8编码之所以被越来越多的人接受甚至喜欢,肯定是有道理的,在WEB2.0盛行的今天,在大谈多浏览器兼容的同时,不得不想到字符编码不同所造成的乱码现象同样需要得到很好的处理..... 

  在N年以前,IE6以下的所有版本,只要没有安装相应的字库,访问相关的页面都是会乱码的,例如,我是IE5 (Windows2000默认) 的版本,在没有安装IE繁体字库的情况下,访问任何繁体页面的网站都是会乱码的,当然前提是该页面采用了BIG5的Charset,而UTF-8作为一种国际编码就能很好的处理该问题,只要将页面存为UTF-8编码格式,再在页面上将codepage及charset全部定义为utf-8就可以在任何客户端浏览器中显示出完全正确的内容,完全不会乱码......

  好了,这里以ASP页面为例,以一个实例来看具体操作吧:

  打开新建一个ASP页面,相信玩ASP的朋友都会留意到,许多下载的源码里,页面最上方一般都有一句:

%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%

  前面的language应该不用多说了,vbscript就是ASP默认的脚本语言,其实完全可以不用写,写了好像还会影响页面执行效率,在这里我们先不讨论这个问题。后面的codepage就是关键了,目的就是告诉浏览器,此页面是何种编码,936代表是简体中文,而950代表繁体中文,65001就是我们今天说的UTF-8编码了。我们将936改成65001。整句如下:

%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%

  再加上输出几个中文字看看能不能正确显示吧。

< %
Response.Write "第一次测试UTF-8页面"
%> 
 
  OK,直接点击“保存”,执行这个页面看看,如果不出意外,大家可能看到显示出的是 “一尾UTF-8页”这几个字,中文有乱码的现象,什么原因呢?

  OK,请大家再点击最上面的 "文件" 菜单,选择"另存为",最下面一行有个编码,默认应该是ANSI的,请大家点下拉框,选择UTF-8,再点保存,再执行试试看,如果不出意外,乱得更厉害了,呵呵,晕了吧。别急,想想原因,因为我们做的页面是HTML返回的,以前我们写HTML时,看到body前面,也就是head里都有一句meta,应该是这样的:

< meta http-equiv="Content-Type" content="text/html; charset=gb2312" > 
  
  也就是指定页面以gb2312编码返回结果,一定要写在有返回结果输出的前面。大家都知道gb2312是简体中文吧,我们今天说的是UTF-8编码,我们就将gb2312改成UTF-8吧,全部代码如下:

< %@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
< meta http-equiv="Content-Type" content="text/html; charset=utf-8">
< %
Response.Write "第一次测试UTF-8页面"
%> 
  
  再执行看看,嗯,这次正常显示了吧.......

  结论:采用UTF-8编码,除了要将文件另存为UTF-8格式之外,还需要同时指定codepage及charset。


文章来源:
·ASP的escape和unescape函数
·使用AspUpload组件上传事例代码
·Godaddy虚拟主机使用AspUpload组件的方法
·怎样解决ASP图片上传漏洞的方法
·ASP里面的四舍五入函数Round和FormatNumber
·ASP 程序实现自动升级功能
·chr码值对应列表大全
·用正则表达式搜索网页手机号码和Email
·ASP在线转flv+所略图+flash在线录制视频
·让163网易相册QQ相册里的照片也能外链
 放生
 愚爱
 够爱
 触电
 白狐
 葬爱
 光荣
 画心
 火花
 稻香
 小酒窝
 下雨天
 右手边
 安静了
 魔杰座
 你不像她
 边做边爱
 擦肩而过
 我的答铃
 怀念过去
 等一分钟
 放手去爱
 冰河时代
 你的承诺
 自由飞翔
 原谅我一次
 吻的太逼真
 左眼皮跳跳
 做你的爱人
 一定要爱你
 飞向别人的床
 爱上别人的人
 感动天感动地
 心在跳情在烧
 玫瑰花的葬礼
 有没有人告诉你
 即使知道要见面
 爱上你是一个错
 最后一次的温柔
 爱上你是我的错
 怎么会狠心伤害我
 不是因为寂寞才想
 亲爱的那不是爱情
 难道爱一个人有错
 寂寞的时候说爱我