代码改变世界

关于 server.urlencode 中文乱码的问题 asp 和 .net 都说明一下

2010-06-29 01:26  废墟中的垃圾  阅读(1197)  评论(0)    收藏  举报

今天做了一个mailto:链接 突然发现在 outlook 里面居然是乱码,思考了一下,应该是需要进行url编码才可以的。所以我进行了url编码,但是依然是乱码,这个比较郁闷。

 

看看我以前的项目,发现以前的项目没有问题。然后只用一个汉字测试,发现以前的项目输出时 2个 %AA 类似于这样的字符串。 但是新的项目是三个。思考了一下,感觉应该是编码的问题,所以开始检查,的确是这样。因为以前的项目大部分是 gb2312 所以直接编码是一个汉字两个编码符,但是utf-8是三个。

 

所以在.net 里面只需要设置一下汉字的编码,然后在UrlEncode 一下就可以了。

 

但是在 asp 里面是不直接提供编码转换的。 网上大部分说的是修改页面编码,但是要知道正常情况一个网站的编码固定以后,直接修改页面的 pagecode 和charset 是不合理的。但是我们其实是可以在需要进行编码的时候进行 pagecode 修改 然后再修改回来 所以函数如下

Function encodeURI(vstrIn,funccodepage)   
 dim CodePage,strURI  
 CodePage = Response.CodePage  
 Response.CodePage = funccodepage  
 strURI = Server.URLEncode(vstrIn)  
 Response.CodePage = CodePage  
 encodeURI = strURI  
End Function

这样就搞定了。