<%'--------------------------------------------------------------------------

'==============================================================

'功能:ASP Server对象内置编码函数

'描写叙述:没有相应的解码函数

'==============================================================

Function VB_URLEncode(enStr)

VB_URLEncode = Server.URLEncode(enStr)

End Function

'==============================================================

'功能:Server.URLEncode()的解码函数

'描写叙述:眼下该函数还未完好

' 当本页面为UTF-8编码时。源字符串中包括例如以下格式子字符串时:

' "编码aa測aa试"

' 函数无法对VB_URLEncode()之后的编码进行解码

' 当本页面为GB2312编码是。该函数工作正常。

'==============================================================

Function VB_URLDecode(enStr)

dim deStr,strSpecial

dim c,i,v

deStr=""

strSpecial="!""#$%&'()*+,.-_/:;<=>?@[\]^`{|}~%"

For i=1 To len(enStr)

c=Mid(enStr,i,1)

If c="%" Then

v=eval_r("&h"+Mid(enStr,i+1,2))

If inStr(strSpecial,chr(v))>0 Then

deStr=deStr&chr(v)

i=i+2

Else

v=eval_r("&h"+ Mid(enStr,i+1,2) + Mid(enStr,i+4,2))

deStr=deStr & chr(v)

i=i+5

End If

Else

If c="+" Then

deStr=deStr&" "

Else

deStr=deStr&c

End If

End If

Next

VB_URLDecode=deStr

End Function

'===========================================

'功能:对中文字符进行编码。由GB2312转换为UTF-8

'描写叙述:与UTF8toGB()互逆

' 编码后的格式可用于页面之间的数据传递,但无法

' 正确显示在HTML页面,须要UTF8toGB()解码。

'===========================================

Function VB_GBtoUTF8(szInput)

Dim wch, uch, szRet

Dim x

Dim nAsc, nAsc2, nAsc3

'假设输入參数为空,则退出函数

If szInput = "" Then

VB_GBtoUTF8 = szInput

Exit Function

End If

'開始转换

For x = 1 To Len(szInput)

'利用mid函数分拆GB编码文字

wch = Mid(szInput, x, 1)

'利用ascW函数返回每个GB编码文字的Unicode字符代码

'注:asc函数返回的是ANSI 字符代码,注意差别

nAsc = AscW(wch)

If nAsc < 0 Then nAsc = nAsc + 65536



If (nAsc And &HFF80) = 0 Then

szRet = szRet & wch

Else

If (nAsc And &HF000) = 0 Then

uch = "%" & Hex(((nAsc \ 2 ^ 6)) Or &HC0) & Hex(nAsc And &H3F Or &H80)

szRet = szRet & uch

Else

'GB编码文字的Unicode字符代码在0800 - FFFF之间採用三字节模版

uch = "%" & Hex((nAsc \ 2 ^ 12) Or &HE0) & "%" & _

Hex((nAsc \ 2 ^ 6) And &H3F Or &H80) & "%" & _

Hex(nAsc And &H3F Or &H80)

szRet = szRet & uch

End If

End If

Next

VB_GBtoUTF8 = szRet

End Function

'===========================================

'功能:对中文字符进行编码。由UTF-8转换为GB2312

'描写叙述:VB_GBtoUTF8()的解码函数

'===========================================

Function VB_UTF8toGB(UTFStr)

For Dig=1 To len(UTFStr)

'假设UTF8编码文字以%开头则进行转换

If mid(UTFStr,Dig,1)="%" Then

'UTF8编码文字大于8则转换为汉字

If len(UTFStr) >= Dig+8 Then

GBStr=GBStr & ConvChinese(mid(UTFStr,Dig,9))

Dig=Dig+8

Else

GBStr=GBStr & mid(UTFStr,Dig,1)

End If

Else

GBStr=GBStr & mid(UTFStr,Dig,1)

End If

Next

VB_UTF8toGB=GBStr

End Function



'UTF8编码文字将转换为汉字

Function ConvChinese(x)

A=split(mid(x,2),"%")

i=0

j=0

For i=0 To ubound(A)

A(i)=c16to2(A(i))

Next

For i=0 To ubound(A)-1

DigS=instr(A(i),"0")

Unicode=""

For j=1 To DigS-1

If j=1 Then

A(i)=right(A(i),len(A(i))-DigS)

Unicode=Unicode & A(i)

Else

i=i+1

A(i)=right(A(i),len(A(i))-2)

Unicode=Unicode & A(i)

End If

Next

If len(c2to16(Unicode))=4 Then

ConvChinese=ConvChinese & chrw(int("&H" & c2to16(Unicode)))

Else

ConvChinese=ConvChinese & chr(int("&H" & c2to16(Unicode)))

End If

Next

End Function

'二进制代码转换为十六进制代码

Function c2to16(x)

i=1

For i=1 To len(x) step 4

c2to16=c2to16 & hex(c2to10(mid(x,i,4)))

Next

End Function



'二进制代码转换为十进制代码

Function c2to10(x)

c2to10=0

If x="0" Then Exit Function

i=0

For i= 0 To len(x) -1

If mid(x,len(x)-i,1)="1" Then c2to10=c2to10+2^(i)

Next

End Function

'十六进制代码转换为二进制代码

Function c16to2(x)

i=0

For i=1 To len(trim(x))

tempstr= c10to2(cint(int("&h" & mid(x,i,1))))

Do While len(tempstr)<4

tempstr="0" & tempstr

Loop

c16to2=c16to2 & tempstr

Next

End Function

'十进制代码转换为二进制代码

Function c10to2(x)

mysign=sgn(x)

x=abs(x)

DigS=1

Do

If x<2^DigS Then

Exit Do

Else

DigS=DigS+1

End If

Loop

tempnum=x

i=0

For i=DigS To 1 step-1

If tempnum>=2^(i-1) Then

tempnum=tempnum-2^(i-1)

c10to2=c10to2 & "1"

Else

c10to2=c10to2 & "0"

End If

Next

If mysign=-1 Then c10to2="-" & c10to2

End Function

%>

<html>

<head>

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

<title>字符编码測试</title>

</head>

<style type="text/css">

body{ margin:20px 10px; line-height: 140%; font-size:12px; color:blue;}

</style>

<body>

<%

On Error Resume Next

str = "##testingTest$$##编码aa測aa试aa##!!67&#=;"

Response.Write("源字符串: " & str & "<BR>")

str1 = VB_URLEncode(str)

str2 = VB_URLDecode(str1)

Response.Write("VB_URLEncode: " & str1 & "<BR>")

Response.Write("VB_URLDecode: " & str2 & "<BR>")

If str2 = str Then Response.Write("结果==>解码正确, URLEncode对字符串中除26个英文字母(包含大写和小写)之外的全部字符都进行编码,中文字符为2字节,非中文字符1字节<BR>")

Response.Write("------------------------------------------------------- <BR>")

str3 = VB_GBtoUTF8(str)

str4 = VB_UTF8toGB(str3)

Response.Write("VB_GBtoUTF8: " & str3 & "<BR>")

Response.Write("VB_UTF8toGB: " & str4 & "<BR>")

If str4 = str Then Response.Write("结果==>解码正确,GBtoUTF8仅仅对中文字符编码,按每一个中文字符3字节编码<BR>")

Response.End()

%>

</body>

</html>

asp对中文编码及解码,Decode和Encode中文网址处理的更多相关文章

  1. python 编码与解码 decode解码 encode 编码

    >>> '无'   #gbk字符'\xce\xde'>>> str1 = '\xce\xde'>>> str1.decode('gbk')  # ...

  2. javascript处理HTML的Encode(转码)和解码(Decode)

    HTML的Encode(转码)和解码(Decode)在平时的开发中也是经常要处理的,在这里总结了使用javascript处理HTML的Encode(转码)和解码(Decode)的常用方式 一.用浏览器 ...

  3. Python3的decode()与encode()

    python3的decode()与encode() Tags: Python Python3 对于从python2.7过来的人,对python3的感受就是python3对文本以及二进制数据做了比较清晰 ...

  4. pyhton字符编码问题--decode和encode方法

    1  decode和encode方法 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成uni ...

  5. 【Python】关于decode和encode

    #-*-coding:utf-8 import sys ''' *首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码, 即先将 ...

  6. python中decode和encode的区别

    #-*-coding:utf-8 import sys ''' *首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码, 即先将 ...

  7. python编码问题 decode与encode

    参考: http://www.jb51.net/article/17560.htm 如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCI ...

  8. ExtJs中decode与encode(转载)

    出自:http://blog.163.com/xiao_mege/blog/static/72942753201102693545195/ 在述说这个例子之前,我假想你已经知道什么是Json数据了,那 ...

  9. python decode和encode

    摘抄: 字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符解码(decode)成unicode,再从unicode编码 ...

随机推荐

  1. Working out (DP)

    Summer is coming! It's time for Iahub and Iahubina to work out, as they both want to look hot at the ...

  2. 刷题总结——过河(NOIP2015)

    题目: 题目背景 NOIP2005提高组试题2. 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都 ...

  3. P1582 倒水 (二进制)

    题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把一个瓶子的水全部倒 ...

  4. HashTable的构造函数有哪些

    HashTable:在并发的环境下,使用synchronized将整张表锁住: HashTable构造函数有: public Hashtable(int initialCapacity, float ...

  5. 济南学习 Day 5 T3 am

    [题目描述] 众所不知,rly现在不会玩国际象棋.但是,作为一个OIer,rly当然做过八皇后问题.在这里再啰嗦几句,皇后可以攻击到同行同列同对角线,在 n*n的棋盘中,摆放n个皇后使它们互相不能攻击 ...

  6. msp430项目编程53

    msp430综合项目---扩展项目三53 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结

  7. ORA-01940: cannot drop a user that is currently connected 问题解析

    https://www.linuxidc.com/Linux/2012-12/76448.htm

  8. 属性font-family:Font property font-family does not have generic default

    以前定义字体都是用的常用的字体,也没注意过会有这个提示,昨天在写界面的时候重新定义了一个本地没有的字体,发现会有提示. W3C的文档: font-family:<family-name>, ...

  9. PYTHON 源码

    http://www.wklken.me/index2.html http://blog.csdn.net/dbzhang800/article/details/6683440

  10. 在matlab中对中国地图中的不同省份按照高度进行渲染

    直接上优化后的代码和效果图 colour_totall=128; % 载入地图数据 --各省的多边形数据 shp_data=shaperead('maps/bou2_4p.shp', 'UseGeoC ...