1. 程式人生 > >asp對中文編碼及解碼,Decode和Encode中文網址處理

asp對中文編碼及解碼,Decode和Encode中文網址處理

<%'--------------------------------------------------------------------------
'==============================================================
'功能: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="!""#$%&'()*+,.-_/:;<=>
[email protected]
[\]^`{|}~%"
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中文編碼解碼,DecodeEncode中文網址處理

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

python中文編碼問題(decode('gbk').encode('utf-8')decode('utf-8').encode('gbk')這好基友)

    想必每個Python新手都會遇到Python編碼的問題,特別是使用到漢字的時候。UTF-8編碼是比較通用的編碼方式,它可以輸出中文,而Python2中預設的編碼方式一般是GBK,所以往往我們期

python中編碼解碼decodeencode的使用

python encode decode python 在處理字符串時經常遇到編碼錯誤,導致亂碼,且python 2.x和 python 3.x之間有很大的不同,先在這裏記錄一下,以後整理;轉載 文章一篇:http://www.cnblogs.com/evening/archive/2012/04

ASPbase64編碼解碼程式

針對郵件退信,內容進行解碼!網上收集,具體出處不詳! <form name="form1" method="post" action="">  <table width="95%" border="0" align="center" cellpadding=

Java中文編碼各種編碼互轉Java判斷檔案編碼

Unicode UTF-8 GBK 及一點Java程式碼 Unicode UTF-8 GBK這些不同的編碼,我們可以想象為不同的字典。同一個漢字,在不同的字典裡面,我們用不同的編號儲存。比如漢字"陳"在Unicode裡編號為9648,在GBK裡面是0xB3C2,在UTF-8

利用base64圖片進行編碼解碼

試圖將圖片通過json進行傳輸,這個時候就想到利用base64編碼的方法來圖片。主要步驟有 1、對圖片檔案進行編碼,轉換為base64編碼的格式,及一長串字元; 2、可將字元通過json進行傳送; 3、目的方接收json陣列,取出編碼字串,並進行解碼,顯示圖片 該方法難點主

javascriptHTML字元編碼解碼

<script> var HtmlUtil = { /*1.用瀏覽器內部轉換器實現html轉碼*/ htmlEncode:function (html){ //1.首先動態建立一個容器標籤元素,如DIV

中文編碼萬國碼

-- 1.0 gbk 中文編碼 占用 nic post 所有 字節 字符編碼支持中文的第一張表就叫 GB2312 1980 GB2312 6700+1995 GBK1.0 200002000 GB18030 27000 big5 臺灣unicode 萬國碼 支持所有國家和

Python3中字符串的編碼解碼以及編碼之間轉換(decodeencode)

python3 encode 由於 表示 nic code .... 以及 mage 一、編碼 二、編碼與解碼 Python3中對py文件的默認編碼是urf-8。但是字符串的編碼是Unicode。 由於Unicode采用32位4個字節來表示一個字符,存儲和傳輸太浪費資

再談編碼 decodeencode

1. ascii. 有: 數字, 字母, 特殊字元. 8bit 1byte 128 最前面是0 2. gbk. 包含: ascii, 中文(主要), 日文, 韓文, 繁體文字. 16bit, 2byte. 3. unicode. 包含gbk,ascii,big5... 32bit, 4byte 4. utf-

jsurl編碼解碼

在前端工作中,偶爾會遇到url的編碼與解碼,比如:在微信授權登入的時候,需要將url進行編碼寫入,再比如:在PC端顯示小表情的時候,會用到對url解碼解析表情。那麼,有哪些編碼解碼方式呢,常用的是哪些呢? 1.為什麼要URL編碼 在因特網上傳送URL,只能採用

base64編碼解碼

encode(input) { //編碼方法 var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

Pycharm中不支持中文編碼的解決方案。Pycharm中文報錯。 Pycharm出現的部分快捷鍵無效解決辦法

androi bubuko mage sdn track 找到 code sso pos Pycharm中不支持中文編碼的解決方案。Pycharm中文報錯。 1. 打開Pycharm ----> File ----> Default se

Pycharm中不支援中文編碼的解決方案。Pycharm中文報錯。 Pycharm出現的部分快捷鍵無效解決辦法

  Pycharm中不支援中文編碼的解決方案。Pycharm中文報錯。  1. 開啟Pycharm ---->  File ----> Default setting ------> Editor --

編碼解碼

package utils; public class Escape { private final static String[] hex = { "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "

js字串編碼解碼 .net字串編碼解碼

js對字串編碼的方式: 1.escape();// 對字串進行編碼   2.encodeurl();//把字串編碼為URI  / 3.encodeURIComponent();//把字串編碼為URI元件 var str = "http://localhost:8080/P

Python下的資料處理機器學習,資料線上本地獲取、解析、預處理訓練、預測、交叉驗證、視覺化

<!doctype html> <html> <head> <title>Example Domain</title> <meta charset="utf-8" /> <meta http-equiv=

python decodeencode

系統 進行 中間 轉碼 str1 編碼 code 轉換成 沒有 摘抄: 字符串在Python內部的表示是Unicode編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字符解碼(decode)成unicode,再從unicode編碼(enco

Pycharm中不支援中文編碼的解決方案。Pycharm中文報錯

Pycharm中不支援中文編碼的解決方案。Pycharm中文報錯 https://blog.csdn.net/zhonggaorong/article/details/53814215   版本資訊:  Pycharm 5.0.3  python &

使用matlab影象進行二值化灰度化處理

用matlab對影象進行二值化處理 >>m = imread('d:\image\logo.jpg'); >> imshow(n); >> n = graythre