如何在ASP页面之间传递时设置变量的编码

时间:2013-02-05 07:28:39

标签: html encoding utf-8 asp-classic

假设我有一个页面A,它使用ks_c_5601-1987(韩文)作为编码,而页面B使用UTF-8(韩文)作为编码。我需要将一个字符串变量从A传递给韩语中的B.因为两个页面使用不同的编码,所以当B使用Request()接收变量时,变量会混乱。

如何将A中的字符串变量编码为UTF-8时将其传递给B?我知道将这两个页面设置为UTF-8编码方案是这里最明智的解决方案,但不幸的是,它不是一个选项,因为页面A使用几个完全依赖于ks_c_5601-1987编码的dll。

编辑:在查看答案后,我继续尝试了这个方法。这是将变量邮箱发送到get_list_center.asp的代码:

<!--mail_mail.asp, page in ks_c_5601-1987-->
<%
dim mailbox = "테스트"
Response.CodePage = 65001 'Response.write should now encode the string into UTF-8
%>

...
<frame name="get_list_center" scrolling="auto" marginwidth="0" framespacing="0" marginheight="0" frameborder="0" src="get_list_center.asp?mailbox=<%=mailbox%>">

这就是我在get_list_center.asp中接收变量的方式:

<%
Session.Codepage=65001

Response.CharSet="UTF-8" 

response.Write CStr(response.codepage) & "<BR>"
response.Write CStr(session.CodePage) & "<BR>"
response.Write CStr(response.CharSet) & "<BR>"
response.codepage = 949
response.Write mailbox & "<BR>"
response.codepage = 65001
response.Write mailbox & "<BR>"
%>

结果如下:

enter image description here

949(ks_c_5601-1987)和65001(UTF-8)版本的response.write都破了。还有什么我想念的吗?

1 个答案:

答案 0 :(得分:1)

我认为您可以通过阅读此问题的解决方案来获得答案: internal string encoding

通过使用Reponse.Codepage,您可以影响发布变量的解释方式。据我了解,您可以切换回您喜欢的编码。


[更新]

因为您使用的是iframe,所以在将请求发送回服务器时处理编码的浏览器。浏览器(据我所知)以与原始页面相同的编码发送数据。因此,如果包含iframe的页面A具有charset = Korean,我相信数据是使用韩文编码发送的。

是否在第A页的html标记中定义了字符集?如果没有,请添加它,然后尝试在第B页中使用相同的内容。

<meta charset="utf-8"> 

此外,由于“테스트”是受 FILE 编码影响的字符串文字,请确保以适当的编码保存asp文件。