科技

中文汉字GB2312和UTF

2019-04-11 09:14:12来源:励志吧0次阅读

在使用Google或者百度进行中文搜索的时候,我们会发现搜索过程中URL地址栏会变成一串格式字符串编码,我们编写程序经常也需要进行中文汉字到这类URL编码的转换,这里介绍两段相关的转换函数。

对于使用UTF-8的Google搜索引擎来说,使用Google搜索 汉字 会变成 比特棋牌官网
,而对于使用GB2312的百度搜索引擎来说,使用百度搜索 汉字 会变成另外的 。下面的两段VB代码分别针对UTF-8(UTF8EncodeURI)和GB2312(GBKEncodeURI)进行了编码的转换。

Private Sub command1_click()

int (UTF8EncodeURI( 汉字 ))

int (GBKEncodeURI( 汉字 ))

End Sub

Function UTF8EncodeURI(szInput)

Dim wch, uch, szRet

Dim x

Dim nAsc, nAsc2, nAsc3

If szInput = Then

UTF8EncodeURI = szInput

Exit Function

End If

For x = 1 To Len(szInput)

wch = Mid(szInput, x, 1)

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

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

UTF8EncodeURI = szRet

End Function

Function GBKEncodeURI(szInput)

Dim i As Long

Dim x() As Byte

Dim szRet As String

szRet =

x = StrConv(szInput, vbFromUnicode)

For i = LBound(x) To UBound(x)

szRet = szRet % Hex(x(i))

Next

GBKEncodeURI = szRet

End Function

那个,按住alt敲小键盘上的数字,就能输入ascii码,这个知道吧?比如,alt97=a, alt+98765=佂。这个技巧曾被用来输入无法破解的密码,步骤就是在百度搜索自己的名字乙腈
,然后把%BA%BA%D7%D6这样的十六进制数转化成十进制数原料
,再用alt输入。这样一次输入的就是两个键盘打不出的字符。

某一次在论坛上,俺见有人说把号如此输入一下玩,于是就想做一个ascii码转字符的程序。

但是,俺的水平有限,不知道怎么做。vb不认识三位数以上的密码,VC++好像也是把它们都转化成单字符的ascii码,根本无法显示汉字。

俺用js做了个,结果显示的都是韩国字,估计是因为js使用utf8编码的缘故。估计有了您这个东西,就能正常运作了?

2007/11/14 23:40:00 支持(7)反对(5) 回复

(*)

验证(*)

分享到: