CODEPAGE=936和65001两种情况下UrlEncode和URLDecode算法详解
作者:随然 日期:2009-06-03
做网站的人都知道Server.UrlEncode函数,不过,网站做多了就会接触到gb2312和utf-8这两种不同的网页编码。网页编码只是最后形成的网页中对字符怎样编码,在网页形成的过程中还对应着不同的编码方案。一般而言,如果做的网页是gb2312的,那么ASP的CODEPAGE是936,而utf-8则是650001。
UrlEncode虽然并不直接将汉字转化为内码,但与内码有着对应关系,就同样的汉字,比如“一级棒”,在CODEPAGE=936时被转化为“%D2%BB%BC%B6%B0%F4”,而CODEPAGE=65001时被转化为“%E4%B8%80%E7%BA%A7%E6%A3%92”。它们分别就对应了“一级棒”三字的GB码和utf-8码(utf-8码与UNICODE码有一一对应的关系)。
在ASP中有两个函数可以分别获取汉字的GB和UNICODE这两种编码,它们分别是“Asc()”和“Ascw()”函数,不过这里要强列说明的是,在CODEPAGE=65001时“Asc()”函数会对双字节字符失效。
下面就拿“一级棒”的“级”字为例,它的GB码为48310(-17226 + 65536)、UNICODE码为32423,转化为16进制,就分别为BCB6和7EA7。其中GB码的十六进制表示一眼就看出来,跟UrlEncode的结果是一致的,所以下面就只要谈谈utf-8了。
进六进制7EA7在“0000 0800-0000 FFFF”范围内,对应的utf-8码为三字节。先将7EA7转化为二进制01111110 10100111,然后重新分段:0111 111010 100111,套用“1110xxxx 10xxxxxx 10xxxxxx”模板后得到11100111 10111010 10100111,就得到了E7 BA A7。再看一下UrlEncode的结果是否相符?
如果要自己写UrlEncode或UrlDecode函数,则可以跟据以上这些规则来实现,下面先列出算法,然后再来讨论是否有必要写这样的函数。(友情提醒:为了排版效果,本站使用两个全角空格来代替一个Tab,如果要验证以下函数,请自行进行替换。)
Function MyUrlEncodeGB(char)
Dim code, codeh, codel
code = "0000" & Hex(Asc(char))'兼容英文字母与数字
codel = Right(code, 2)
codeh = Left(Right(code, 4), 2)
UrlEncode虽然并不直接将汉字转化为内码,但与内码有着对应关系,就同样的汉字,比如“一级棒”,在CODEPAGE=936时被转化为“%D2%BB%BC%B6%B0%F4”,而CODEPAGE=65001时被转化为“%E4%B8%80%E7%BA%A7%E6%A3%92”。它们分别就对应了“一级棒”三字的GB码和utf-8码(utf-8码与UNICODE码有一一对应的关系)。
在ASP中有两个函数可以分别获取汉字的GB和UNICODE这两种编码,它们分别是“Asc()”和“Ascw()”函数,不过这里要强列说明的是,在CODEPAGE=65001时“Asc()”函数会对双字节字符失效。
下面就拿“一级棒”的“级”字为例,它的GB码为48310(-17226 + 65536)、UNICODE码为32423,转化为16进制,就分别为BCB6和7EA7。其中GB码的十六进制表示一眼就看出来,跟UrlEncode的结果是一致的,所以下面就只要谈谈utf-8了。
进六进制7EA7在“0000 0800-0000 FFFF”范围内,对应的utf-8码为三字节。先将7EA7转化为二进制01111110 10100111,然后重新分段:0111 111010 100111,套用“1110xxxx 10xxxxxx 10xxxxxx”模板后得到11100111 10111010 10100111,就得到了E7 BA A7。再看一下UrlEncode的结果是否相符?
如果要自己写UrlEncode或UrlDecode函数,则可以跟据以上这些规则来实现,下面先列出算法,然后再来讨论是否有必要写这样的函数。(友情提醒:为了排版效果,本站使用两个全角空格来代替一个Tab,如果要验证以下函数,请自行进行替换。)
Function MyUrlEncodeGB(char)
Dim code, codeh, codel
code = "0000" & Hex(Asc(char))'兼容英文字母与数字
codel = Right(code, 2)
codeh = Left(Right(code, 4), 2)
asp写的汉字转换utf-8及utf-8转gb2312的代码
作者:随然 日期:2009-06-02
chinese2unicode 为汉字转 UTF-8编码,utf2gb为UTF-8转换为汉字GB2312编码
复制内容到剪贴板 程序代码
function chinese2unicode(str)
dim i
dim str_one
dim str_unicode
for i=1 to len(str)
str_one=mid(str,i,1)
str_unicode=str_unicode&chr(38)
str_unicode=str_unicode&chr(35)
str_unicode=str_unicode&chr(120)
dim i
dim str_one
dim str_unicode
for i=1 to len(str)
str_one=mid(str,i,1)
str_unicode=str_unicode&chr(38)
str_unicode=str_unicode&chr(35)
str_unicode=str_unicode&chr(120)
PHP中指定GB2312编码文字转换成UTF-8编码的类方法
作者:随然 日期:2009-06-02
指定一段GB2312编码中文汉字转换成UTF-8编码的ASP函数代码
作者:随然 日期:2009-06-02
在制作网页的时候,偶尔会出现编码交叉的情况。一段GB2312编码的汉字在UTF-8页面中可能会出现乱码,所以这个时候需要把这段文字转换编码,下面提供转换编码的ASP函数代码供大家参考。
复制内容到剪贴板 程序代码
'汉字GB2312编码转换成UTF-8编码
function chinese2unicode(Salon)
dim i
dim Salon_one
dim Salon_unicode
for i=1 to len(Salon)
Salon_one=Mid(Salon,i,1)
Salon_unicode=Salon_unicode&chr(38)
Salon_unicode=Salon_unicode&chr(35)
Salon_unicode=Salon_unicode&chr(120)
function chinese2unicode(Salon)
dim i
dim Salon_one
dim Salon_unicode
for i=1 to len(Salon)
Salon_one=Mid(Salon,i,1)
Salon_unicode=Salon_unicode&chr(38)
Salon_unicode=Salon_unicode&chr(35)
Salon_unicode=Salon_unicode&chr(120)
HTML转换成UBB代码的JAVASCRIPT和ASP函数程序
作者:随然 日期:2009-04-05
在做网站的过程中,经常会遇到把UBB代码的文字内容转换成HTML代码显示出来,有的时候也会把HTML代码转换成UBB代码。比如在使用ASP+WML制作WAP网站的过程中,就遇到了这个问题。
文字内容包含有<table><tr><td>等HTML的代码,手机浏览时无法正常在WML页面中显示出来,所以就可以把这些HTML代码标签转换成UBB代码,然后再转换成简单的WML支持的HTML代码显示出来。
下面提供两种代码供大家选择:
第一种:JAVASCRIPT代码
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
文字内容包含有<table><tr><td>等HTML的代码,手机浏览时无法正常在WML页面中显示出来,所以就可以把这些HTML代码标签转换成UBB代码,然后再转换成简单的WML支持的HTML代码显示出来。
下面提供两种代码供大家选择:
第一种:JAVASCRIPT代码
HTML代码
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
用window.location.href 的属性解决关于location 的 target 问题
作者:随然 日期:2009-03-08
3个页面
1 index.html
2 Untitled-1.htm
3 UntitledFrame-2.htm
重点解析:
window.parent.rigthmain.location.href="http://www.baidu.com";
parent取父框架
rigthmain去子框架
ASP代码中的使用例子:
1 index.html
复制内容到剪贴板 程序代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<frameset rows="*" cols="241,*" framespacing="0" frameborder="NO" border="0">
<frame src="UntitledFrame-2.htm" id="leftFrame" name="leftFrame" scrolling="NO" noresize>
<frame src="Untitled-1.htm" id="rigthmain" name="rigthmain">
</frameset>
<noframes><body>
</body></noframes>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<frameset rows="*" cols="241,*" framespacing="0" frameborder="NO" border="0">
<frame src="UntitledFrame-2.htm" id="leftFrame" name="leftFrame" scrolling="NO" noresize>
<frame src="Untitled-1.htm" id="rigthmain" name="rigthmain">
</frameset>
<noframes><body>
</body></noframes>
</html>
2 Untitled-1.htm
复制内容到剪贴板 程序代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>
dasssssssssssssssssssssss
</body>
</html>
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>
dasssssssssssssssssssssss
</body>
</html>
3 UntitledFrame-2.htm
复制内容到剪贴板 程序代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<script>
function aa(){
window.parent.rigthmain.location.href="http://www.baidu.com";
}
</script>
<body>
<a onClick=" aa()">a</a>
</body>
</html>
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<script>
function aa(){
window.parent.rigthmain.location.href="http://www.baidu.com";
}
</script>
<body>
<a onClick=" aa()">a</a>
</body>
</html>
重点解析:
window.parent.rigthmain.location.href="http://www.baidu.com";
parent取父框架
rigthmain去子框架
ASP代码中的使用例子:
复制内容到剪贴板 程序代码
Response.write("<script>alert(""对不起,您没有权根进入该页!"");window.parent.top.location.href=""exit.asp"";</script>")
ASP 中如何判断用户名是否为字母和数字的组合
作者:随然 日期:2009-02-25
时间日历控件(JS),支持小时、分钟、秒
作者:随然 日期:2009-02-02
复制内容到剪贴板 程序代码
<script>
// 主调用函数是 setday(this,[object])和setday(this),[object]是控件输出的控件名,举两个例子:
// 一、<input name=txt><input type=button value=setday onclick="setday(this,document.all.txt)">
// 二、<input onfocus="setday(this)">
var bMoveable=true;
var strFrame;
document.writeln('<iframe id=endDateLayer frameborder=0 width=162 height=211 style="position: absolute; z-index: 9998; display: none"></iframe>');
strFrame='<style>';
strFrame+='INPUT.button{BORDER-RIGHT: #63A3E9 1px solid;BORDER-TOP: #63A3E9 1px solid;BORDER-LEFT: #63A3E9 1px solid;';
// 主调用函数是 setday(this,[object])和setday(this),[object]是控件输出的控件名,举两个例子:
// 一、<input name=txt><input type=button value=setday onclick="setday(this,document.all.txt)">
// 二、<input onfocus="setday(this)">
var bMoveable=true;
var strFrame;
document.writeln('<iframe id=endDateLayer frameborder=0 width=162 height=211 style="position: absolute; z-index: 9998; display: none"></iframe>');
strFrame='<style>';
strFrame+='INPUT.button{BORDER-RIGHT: #63A3E9 1px solid;BORDER-TOP: #63A3E9 1px solid;BORDER-LEFT: #63A3E9 1px solid;';