如何转换字符到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 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 ‘只有一半是相同的中间间隔着少了一半’----什么意思? 就是把地址栏的代码所有偶数个%后面的两个字母全去掉就和udf所转换的相同了
比如“百度”的代码分别是
%B0%D9%B6%C8
%B0 %B6(实际中间没有空格为了便于比较加上空格) 没人啊:face (30): 终于有一点明白了,就是把中文转换成GB2312编码然后加上百分号"%"。接着的问题就是怎么把中文转换成GB2312编码了。 感谢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 回复 7# vivier001
哦,这个也可以用吧,不过它对英文数字等同样转码,那就没必要了。
我再写一个不对字母及数字等编码的,一会编辑在现在的2楼~ :face (1):有什么用呀! 有什么用呀!
anyky123 发表于 2009-11-23 15:21 http://www.autoitx.com/images/common/back.gif
有时候post中文会不成功的,转换一下就好了
页:
[1]