当前位置:  开发笔记 > 编程语言 > 正文

ASP Classic中的UTF-8 Server.UrlEncode问题

如何解决《ASPClassic中的UTF-8Server.UrlEncode问题》经验,为你挑选了1个好方法。

我有些麻烦的URL编码为UTF-8编码的文本字符串以通过HTTP传递。我在经典ASP(vbscript)中使用Server.URlEncode对“é”字符进行编码。

它产生以下字符串,

%C3%83%C2%A9

我通过HTTP与之交谈的系统是PHP,但是无法解码此字符串。使用http://www.albionresearch.com/misc/urlencode.php上的PHP编码器,出现了使用PHP URL编码方法编码的相同字符,

%E9

有谁知道我如何在ASP中成功编码UTF-8编码的字符串,以便PHP系统可以成功对其进行解码?



1> bobince..:

%C3%83%C2%A9

编码太多了:字符串写成UTF-8,读回为ISO-8859-1,然后再写成UTF-8,然后再进行十六进制编码!

%E9

编码太少:该字符串以纯ISO-8859-1的形式写出并以十六进制编码。如果您正在使用的PHP脚本期望使用ISO-8859-1,那么这很好,但是现代Web系统应该使用UTF-8,在这种情况下,您希望其显示的顺序如下:

%C3%A9

(编码正确!)

我在经典ASP中使用Server.URLEncode

不幸的是,经典ASP在处理Unicode方面存在一些严重缺陷。您可以设置@ CODEPAGE = 65001(和Response.Charset =“ UTF-8”)以生成UTF-8页面,但是您的内部字符串类型仍在系统代码页中进行编码,并且从表单提交或数据库中获取的任何数据都将被读入该编码。

因此,您可以使用URLEncode()文字chr 233来获取正确的输出,但如果从表单提交中以UTF-8编码的'é'获取数据,则最终会得到'é' UTF-8序列被误解为ISO-8859-1(实际上是cp1252,与Windows等效)。

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有