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对象参考文档及使用实例
- 暂时没有评论!
