나는 오늘 작은 기능을 만들었을 때 xmlhttp에서 오랜 시간을 검색 한 후에는 중국어 인코딩을 얻을 수 있습니다. 다시 얻으려면, 이는 의심 할 여지없이 코드의 실행 효율성이 증가하지 않지만이 방법은 즉시 사용해서는 안됩니다.
예를 들어 "한자"와 같은
UTF-8에 따른 인코딩은 다음과 같습니다.%E6%B1%89%E5%AD%97입니다
GB2312에 따른 인코딩은 다음과 같습니다.%BA%BA%D7%D6 D6입니다
그리고 내 웹 페이지는 현재 UTF-8로 인코딩되어있어 이러한 순수한 인코딩 문자열을 한자로 변환하는 방법은 무엇입니까?
우선, 다음 기능이 내 페이지에 포함되어야합니다.
함수 urldecode (enstr)
딤 파괴, strspecial
Dim C, I, v
Dest =
strspecial =!#$%& '()*+.
i = 1 to len (enstr)의 경우
C = MID (Enstr, I, 1)
C =% 인 경우
V = 평가 (& H+MID (ENSTR, I+1,2))
악기 (strspecial, chr (v))> 0 인 경우
Dest = Dest & Chr (V)
i = i+2
또 다른
V = 평가 (& H+ MID (ENSTR, I+ 1,2)+ MID (ENSTR, I+ 4,2))
Dest = Dest & Chr (V)
i = i+5
끝 If
또 다른
C =+ 인 경우
파괴 = 파괴 &
또 다른
Desp = Dest & c
끝 If
끝 If
다음
urldecode = desp
엔드 기능
위의 기능은 URL 디코딩 함수입니다. 아래 함수는 UTF-8 인코딩을 중국어로 변환하는 기능입니다.
기능 UTF2GB (UTFSTR)
dig = 1 to len (utfstr)의 경우
'UTF8 코딩 텍스트가%로 시작하면 변환됩니다.
Mid (utfstr, dig, 1) =% 인 경우
'UTF8 인코딩 텍스트는 8보다 큽니다.
LEN (UTFSTR)> = dig+8 인 경우
gbstr = gbstr & convchinese (MID (UTFSTR, DIG, 9))
dig = dig+8
또 다른
gbstr = gbstr & mid (utfstr, dig, 1)
끝 If
또 다른
gbstr = gbstr & mid (utfstr, dig, 1)
끝 If
다음
UTF2GB = GBSTR
엔드 기능
'UTF8 인코딩 텍스트는 한자로 변환됩니다
기능 convchinese (x)
a = split (mid (x, 2),%)
i = 0
j = 0
i = 0에서 ubound (a)의 경우
a (i) = c16to2 (a (i))
다음
i = 0으로 Ubound (a) -1
digs = inst (a (i), 0)
유니 코드 =
j = 1에서 digs-1
j = 1이면
a (i) = 오른쪽 (a (i), len (a (i)) -digs)
유니 코드 = 유니 코드 & A (i)
또 다른
i = i+1
a (i) = 오른쪽 (a (i), Len (a (i)) -2)
유니 코드 = 유니 코드 & A (i)
끝 If
다음
LEN (C2To16 (유니 코드)) = 4 인 경우
convchinese = convchinese & chrw (int (& h & c2to16 (유니 코드))
또 다른
convchinese = convchinese & chr (int (& h & c2to16 (유니 코드))
끝 If
다음
엔드 기능
'이진 코드는 16 진 코드로 변환합니다
기능 C2To16 (x)
i = 1
i = 1에서 Len (x)에 대해 4 단계
C2To16 = C2To16 & Hex (C2To10 (Mid (X, I, 4))))
다음
엔드 기능
'바이너리 코드는 소수점 코드로 변환됩니다
함수 C2TO10 (X)
C2To10 = 0
x = 0이면 함수를 종료하십시오
i = 0
i = 0에서 len (x) -1에서
Mid (x, len (x) -i, 1) = 1 인 경우 c2to10 = c2to10+2^(i)
다음
엔드 기능
'성경 코드는 이진 코드로 변환됩니다
함수 C16TO2 (X)
i = 0
i = 1 to len (trim (x))
tempstr = c10to2 (cint (int (& h & mid (x, i, 1))))
LEN (tempst) <4
tempStr = 0 & tempStr
고리
C16TO2 = C16TO2 & TEMPSTR
다음
엔드 기능
'최상위 코드는 이진 코드로 변환합니다
기능 c10to2 (x)
mysign = sgn (x)
x = abs (x)
digs = 1
~하다
x <2^가 파는 경우
출구
또 다른
digs = digs+1
끝 If
고리
tempnum = x
i = 0
i = 1 단계 1로 발굴됩니다
tempnum> = 2^(i-1)라면
tempnum = tempnum-2^(I-1)
C10TO2 = C10TO2 & 1
또 다른
C10TO2 = C10TO2 & 0
끝 If
다음
mySign = -1 인 경우 c10to2 = -& c10to2
엔드 기능
일반 UTF-8 페이지에서 직접 사용할 수 있습니다.
응답. UTF2GB (%E6%B1%89%E5%AD%97)
즉, UTF2GB (%E6%B1%89%E5%AD%97) = 한자
그러나 현재 UTF8 페이지가 GB 코딩 (예 :%ba%ba%d7%d6)을 얻는 경우 어떻게 한자로 변환 할 수 있습니까? 현재 위의 URLDECODE (ENSTR)의 디코딩 기능은 현재 페이지의 코딩 모드를 일시적으로 변경하기 위해 특별한주의를 기울일 수 없습니다.
<%
세션 .codepage = 936 '강제 GB2312 로의 전환
Dim Mykey : Mykey = urldecode (%ba%ba%d7%d6) 'gb cod string
session.codepage = 65001 '다시 페이지를 UTF-8 코딩으로 돌아 가기 다시 코딩
응답. 쓰기 (Mykey)
%>
이때 나는 한자를 얻었습니다. 간단하게, 다음 번 에이 사이트를 따르십시오.