对URL编码的两种做法

         例如你在http://mp3.baidu.com/里面搜索“爱你w”你将看到地址栏里面出现

http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%B0%AE%C4%E3w&lm=-1

注意word=后的“%B0%AE%C4%E3w”就是IE对URL编码的结果,也即是GB转换成Unicode

在.net里你怎么获得这样的效果呢?Web.HttpUtility.UrlEncode就是用来搞这个东东的,前提是你先添加对

System.Web.DLL的引用。

这是最简单的方法,如 MsgBox(Web.HttpUtility.UrlEncode("爱你")。(也许你获得的和实际想得到的不一样)

别急 MsgBox(Web.HttpUtility.UrlEncode("爱你", Encoding.Default))。OK没事了吧?谢谢.net带给你的方便吧!

            下面是第二种方法,比较麻烦和原始

Dim s As String
        Dim s1 As Byte() = System.Text.Encoding.Default.GetBytes("爱你")
        Dim i As Integer = 0
        While i < s1.Length
            s &= "%" & Convert.ToString(s1(i), 16)
            i += 1

End While
        MsgBox(s)

如果你要在传递的URL里面夹杂英文如“爱你mygirl”就麻烦了,

别激,

看看我定义二个Function就没事了

 Function FomartString(ByVal Str As String) As String
        Dim strOK As String
        Dim i, c As Integer
        Dim isChinese As Boolean
        For i = 1 To Len(Str)
            c = Asc(Mid(Str, i, 1))
            If c >= 0 Then 'is not chinese
                isChinese = False
                strOK &= Mid(Str, i, 1)

            Else 'chinese
                strOK &= DoConv(Mid(Str, i, 1))
            End If
        Next

        FomartString = strOK

 End Function

‘DoConv过程是来个中文转换一个

 Function DoConv(ByVal InputString As String) As String

        Dim s As String
        Dim s1 As Byte() = System.Text.Encoding.Default.GetBytes(InputString)
        Dim i As Integer = 0
        While i < s1.Length
            s &= "%" & Convert.ToString(s1(i), 16)
            i += 1
        End While
        DoConv = s
    End Function

现在你要编码什么样的就什么样的了。

调用 msgbox(FomartString("我爱你mygirl"))

没事了吧?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值