日期:2014-05-16  浏览次数:20945 次

UTF8编码的页面对GBK的数据库的查询问题
本帖最后由 lykme 于 2013-03-12 22:47:44 编辑
页面使用jquery mobile框架(UTF8)
然后数据库sqlserver是GBK的
比如进行登录
现在输入英文的用户名是正常登录的
如果是中文就不行,我使用了一个函数依然不行

而且我打印了一下,无论是utf8还是gbk的,中文都是正常显示的(难道在utf8的页面可以显示GBK的中文?)

请教各位大神~

[code=asp]
function UTF2GB(UTFStr)
 for Dig=1 to len(UTFStr)
 if mid(UTFStr,Dig,1)="%" then
 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
 UTF2GB=GBStr
end function 

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
[/code]