标题: [特效代码] [已解决]批处理如何把中文转为URL编码 [打印本页]
作者: inittab 时间: 2009-10-17 09:07 标题: [已解决]批处理如何把中文转为URL编码
最近用批处理写一个自动网络搜索程序。英文的OK,但中文却出现一些麻烦,比如在google.cn 搜索“心的距离”,提交的地址是
http://www.google.cn/search?hl=zh-CN&newwindow=1&q=%E5%BF%83%E7%9A%84%E8%B7%9D%E7%A6%BB
其中的%E5%BF%83%E7%9A%84%E8%B7%9D%E7%A6%BB 其实是"心的距离" 的url 编码。
想请教各位高手,有没办法用批处理把中文字转为url编码。
[ 本帖最后由 inittab 于 2009-10-17 22:18 编辑 ]
作者: hlzj88 时间: 2009-10-17 10:49
工具
http://www.jz5u.com/soft/apply/conve/5892.html
作者: Seter 时间: 2009-10-17 11:34
直接
http://www.google.cn/search?hl=zh-CN&newwindow=1&q=心路历程
应该就可以了啊
作者: slore 时间: 2009-10-17 12:22
...UTF-8编码...
作者: zqz0012005 时间: 2009-10-17 12:43
google是用UTF-8编码,可用JavaScript的 encodeURI 方法。
百度是用ANSI编码,可用VBScript的 Asc 函数(逐个字符处理)。
作者: inittab 时间: 2009-10-17 17:39 标题: 回复 3楼 的帖子
多谢大家回复,的确google是可以直接用中文的,我不仅要从google.
还要从其他网站,它们必须用中文转成url 编码才可以作为key. 几个网点都是utf-8的。
因为要把它写到批处理中,所以只要命令行方式。
bat代码,vbs代码 都行, 或者有第三方支持命令行的那最好不过了。
js不太熟,可以跟bat混合编程吗?
作者: slore 时间: 2009-10-17 18:52
- MsgBox UTF8Encode("我是Slore")
-
- Public Function UTF8Encode(szString)
- Dim szChar,szTemp,szCode
- Dim szHex,szBin
- Dim iCount1,iCount2
- Dim iStrLen1,iStrLen2
- Dim lResult
- Dim lAscVal
- szString = Trim(szString)
- iStrLen1 = Len(szString)
- For iCount1 = 1 To iStrLen1
- szChar = Mid(szString, iCount1, 1)
- lAscVal = AscW(szChar)
- If lAscVal >= &H0 And lAscVal <= &HFF Then
- If (lAscVal >= &H30 And lAscVal <= &H39) Or _
- (lAscVal >= &H41 And lAscVal <= &H5A) Or _
- (lAscVal >= &H61 And lAscVal <= &H7A) Then
- szCode = szCode & szChar
- Else
- szCode = szCode & "%" & Hex(AscW(szChar))
- End If
- Else
- szHex = Hex(AscW(szChar))
- iStrLen2 = Len(szHex)
- For iCount2 = 1 To iStrLen2
- szChar = Mid(szHex, iCount2, 1)
- szBin = szBin & Mid("0000;0001;0010;0011;0100;0101;0110;0111;1000;1001;1010;1011;1100;1101;1110;1111;", CLng("&H" & szChar) * 5 + 1, 4)
- Next
- szTemp = "1110" & Left(szBin, 4) & "10" & Mid(szBin, 5, 6) & "10" & Right(szBin, 6)
- For iCount2 = 1 To 24
- If Mid(szTemp, iCount2, 1) = "1" Then
- lResult = lResult + 1 * 2 ^ (24 - iCount2)
- Else: lResult = lResult + 0 * 2 ^ (24 - iCount2)
- End If
- Next
- szTemp = Hex(lResult)
- szCode = szCode & "%" & Left(szTemp, 2) & "%" & Mid(szTemp, 3, 2) & "%" & Right(szTemp, 2)
- End If
- szBin = vbNullString
- lResult = 0
- Next
- UTF8Encode = szCode
- End Function
复制代码
作者: inittab 时间: 2009-10-17 20:17
非常感谢。结果很正确!
还有个问题,我把它存为url.vbs
想把它在cmd 命令状态下运行。
c:\url.vbs 我爱bathome (就是把中文作为参数传给vbs)
处理结果返回给bat ,可以做吗。
作者: cutebe 时间: 2009-10-17 21:06 标题: 以前写的,存为BAT,结果用FOR接收
- ::EC_URI.JS::编码URI
- @echo off
- set JSF="%TMP%\EC_URI.JS"
- echo=WScript.echo(encodeURIComponent(WScript.Arguments(0)));>%JSF%
- set/pSTR=请输入URI地址(或普通字串):
- cscript //nologo %JSF% "%STR%"
- pause
复制代码
- ::DC_URI.JS::解码URI
- @echo off
- set JSF="%TMP%\DC_URI.JS"
- echo=WScript.echo(decodeURIComponent(WScript.Arguments(0)));>%JSF%
- set/pURI=请输入URI地址(或有类似%%5D%%4C的字串):
- cscript //nologo %JSF% "%URI%"
- pause
复制代码
作者: Demon 时间: 2011-6-1 20:04
::EC_URI.JS::编码URI
@echo off
set JSF="%TMP%\EC_URI.JS"
echo=WScript.echo(encodeURIComponent(WScript.Arguments(0)));>%JSF%
set/pSTR=请输入URI地址(或普通字串):
cscript //nologo %JSF% "%STR%"
...
cutebe 发表于 2009-10-17 21:06
encodeURIComponent和urlencode是不一样的。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |