vivier001 发表于 2009-11-23 00:44:50

如何转换字符到ie可读,udf好像不好用啊

本帖最后由 vivier001 于 2009-11-24 13:34 编辑

比如在百度中搜索“百度”,地址栏会变作
http://www.baidu.com/s?wd=%B0%D9%B6%C8
也就是把百度转换成%B0%D9%B6%C8
怎么样才能完成这样的转换呢?
udf中的
_INetExplorerCapable ( $s_IEString )
可以把“百度”转换成%B0%B6
只有一半是相同的中间间隔着少了一半,谁知道怎么回事?

afan 发表于 2009-11-23 00:44:51

本帖最后由 afan 于 2009-11-23 22:57 编辑

一会给你写个udf,以前也弄了个,找不到了
OK,写好了~$str = AnsiURLEncode("百度")
MsgBox(0, 0, $str)
ShellExecute('http://www.baidu.com/s?wd=' & $str)

Func AnsiURLEncode($str)
        Local $astr, $i, $s2d, $sS = StringSplit($str, '')
        For $i = 1 To UBound($sS) - 1
                If StringRegExp($sS[$i], '[^\x00-\xff]') Then
                        $s2d = StringToBinary($sS[$i] & ' ')
                        $astr &= '%' & StringMid($s2d, 3, 2) & '%' & StringMid($s2d, 5, 2)
                ElseIf StringRegExp($sS[$i], '[^\w]') Then
                        $s2d = StringToBinary($sS[$i])
                        $astr &= '%' & StringMid($s2d, 3, 2)
                Else
                        $astr &= $sS[$i]
                EndIf
        Next
        ;$astr = StringReplace($astr, '%20', '+') ;注:如果空格的编码想换成'+'号,可以取消注释此行
        Return $astr
EndFunc   ;==>AnsiURLEncode这个只对字母、数字、下划线以外的字符编码,比较合理~ 呵呵 :face (10):

为了方便搜索已将此代码单独整理到UDF区: http://www.autoitx.com/forum.php?mod=viewthread&tid=11042

netegg 发表于 2009-11-23 01:04:48

‘只有一半是相同的中间间隔着少了一半’----什么意思?

vivier001 发表于 2009-11-23 08:27:24

就是把地址栏的代码所有偶数个%后面的两个字母全去掉就和udf所转换的相同了
比如“百度”的代码分别是
%B0%D9%B6%C8
%B0      %B6(实际中间没有空格为了便于比较加上空格)

vivier001 发表于 2009-11-23 14:19:59

没人啊:face (30):

vivier001 发表于 2009-11-23 14:25:33

终于有一点明白了,就是把中文转换成GB2312编码然后加上百分号"%"。接着的问题就是怎么把中文转换成GB2312编码了。

vivier001 发表于 2009-11-23 14:30:31

感谢afan
找到了你以前的回帖哈哈:face (29): ,见下帖
http://www.autoitx.com/forum.php?mod=viewthread&tid=9698&highlight=gb2312MsgBox(0, 0, cn2ansi('你好'))

Func cn2ansi($wchar)
      Dim $kg = ''
      For $i = 1 To StringLen($wchar)
                $kg &= ' '
      Next
      Local $wz = StringToBinary($wchar & $kg), $anstr = '%'
      For $ii = 3 To StringLen($wz) Step 2
                $anstr &= BinaryToString(StringMid($wz, $ii, 2)) & '%'
      Next
      Return StringTrimRight($anstr, 1)
EndFunc   ;==>cn2ansi

afan 发表于 2009-11-23 14:50:28

回复 7# vivier001


    哦,这个也可以用吧,不过它对英文数字等同样转码,那就没必要了。
我再写一个不对字母及数字等编码的,一会编辑在现在的2楼~

anyky123 发表于 2009-11-23 15:21:29

:face (1):有什么用呀!

vivier001 发表于 2009-11-23 16:18:44

有什么用呀!
anyky123 发表于 2009-11-23 15:21 http://www.autoitx.com/images/common/back.gif




有时候post中文会不成功的,转换一下就好了
页: [1]
查看完整版本: 如何转换字符到ie可读,udf好像不好用啊