当前位置:首页 » 网站技术 » ASP

ASP中GB2312和UTF-8编码的互相转换

...

ASP中GB2312和UTF-8编码的互相转换

在用ASP编写网页过程中,经常会遇到页面乱码的问题,而且很多初学者,不太了解ASP页面的编码,虽然可能在IE中浏览没问题,但在其他浏览器上就出问题;或者由简体中文转成英文或繁体中文时,就会出现乱码;或者因为服务器的操作系统是英文的,网页也出现了乱码。这里不详细讲述网页的编码知识,只是提供最常使用的UTF-8和GB2312编码转换。

'GB2312和UTF-8转换函数
Function BytesToBstr(str,cset)
Dim objstream:Set objstream=Server.CreateObject("ADODB.Stream") '创建ADODB.Stream对象
objstream.Type=2 '1二进制方式 2 文本方式
objstream.Mode=3 '1读 2写 3读写
objstream.Open '打开ADODB.Stream对象
objstream.Write str '将数据装入ADODB.Stream对象中
objstream.Position=0 '指针
objstream.Type=2 '文本方式
objstream.Charset=cset '设置编码,如UTF-8、GB2312、BIG5等
BytesToBstr=objstream.ReadText '从ADODB.Stream对象中读取文本
objstream.Close '关闭ADODB.Stream对象
Set objstream=Nothing
End Function

 UTF-8和GB2312编码互转函数调用示例

'把变量str的GB2312编码内容转为UTF-8编码
str=BytesToBstr(str,"UTF-8")

'把变量str的UTF-8编码内容转为GB2312编码
str=BytesToBstr(str,"GB2312")

'注:BIG5是繁体字的编码
 

ASP文件编码

ASP文件的编码在代码最顶部指定

指定GB2312编码
CODEPAGE="936"
指定UTF-8编码
CODEPAGE="65001"
指定BIG5编码
CODEPAGE="950"

不指定可能会造成乱码,除了在ASP中指定外,网页的meta标记也要指定,如下智思网方法

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

一般ASP编写的页面如下,下面代码中粗体表示要指定编码的位置,两处都要指定,才能保证页面不出现乱码,而且两者要相对应:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>智思网测试代码</title>
</head>
<body>
<%
'ASP代码
%>
</body>
</html>

ADODB.Stream对象使用方法请参考:ADODB.Stream对象参考文档及使用实例

继续阅读
提高asp页面的访问速度的技巧
ASP提取HTML中图片地址的函数
ASP获取数据库所有表名和字段名
SQL修改ACCESS数据表名
ASP.NET AJAX 错误:'Sys' 未定义解决方法
ASP.NET服务端控件事件是如何触发的
ASP.NET2.0服务器控件开发之实现事件
ASP.NET2.0服务器控件之捕获回传事件
ASP.NET 2.0服务器控件之处理回传数据
发表评论

昵称:
最新评论
暂时没有评论!