server.urlencode的GB2312和Utf-8问题

字号选择:    
今天在写baidu的mp3小偷玩,我的文件是用utf-8编码。
在查询关键词的时候发现 server.urlencode 后的字符和baidu的完全不同。

搜索了半天了没有找到 server.urlencode 的编码问题的解决方法。

实际上很简单,只要简单的修改下CodePage就可以了

如"菊花台 周杰伦"如果用utf-8来urlencode,得到的值是
%E8%8F%8A%E8%8A%B1%E5%8F%B0+%E5%91%A8%E6%9D%B0%E4%BC%A6
经过下面的编码转换以后得到的就是
%BE%D5%BB%A8%CC%A8+%D6%DC%BD%DC%C2%D7

http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%BE%D5%BB%A8%CC%A8+%D6%DC%BD%DC%C2%D7&lm=-1

musicWord="菊花台 周杰伦"
response.write server.urlencode(musicWord)
    Session.CodePage=936
    encodemusicWord = server.urlencode(musicWord)
    response.write encodemusicWord
    Session.CodePage=65001
response.write encodemusicWord


函数化一下:
Function encodeUrl(paraString,Encoding1,Encoding2)
Rem 不同编码的urlencode函数
Rem Encoding1 程序使用的编码 utf-8=65001,GB2312=936
Rem Encoding2 需要得到的编码
Rem by fisker 07.02.07
    Session.CodePage=Encoding2
    encodeUrl = server.urlencode(paraString)
    Session.CodePage=Encoding1
End Function


使用的时候
test=encodeUrl("测试",65001,936)


好有成就感。
相关内容:
Loading Related Items ...

Comments Feed: loading...
Trackback URL:
Loading Trackback URI ...
引用 leeeeeeeesum
[ 2007-2-7 19:54:50 ]
翘 翘 翘个大拇指
引用 leeeeeeeesum
[ 2007-2-7 19:55:12 ]
q|^.^|p

猴子
引用 doyle
[ 2007-2-8 8:39:20 ]
不是有个开关的吗:
ie=utf-8
记得只要在url中加入这个参数就可以接收utf-8编码了
引用 fisker
[ 2007-2-8 9:04:37 ]
好像是有的,但我当时确实对这个问题产生了兴趣,所以就研究了一下。

另外不知道mp3搜索有没有这个。
引用 小男
[ 2007-8-16 18:46:02 ]
为什么
Encoding1 不直接等于 Session.CodePage
还要传一次?
引用 fisker
[ 2007-8-17 8:53:37 ]
小男:

久仰啊。
我不知道如果程序没有设置 Session.CodePage 这里能不能取到值呢?所以就这样写了。
时间也比较长了,也不知道当时怎么考虑的。
引用 wag
[ 2007-11-15 20:50:23 ]
其实,主要的区别是把空格编码成了加号,用replace函数把编码后的文本中的加号替换成 即可
发表评论