假设我有一个页面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>"
%>
结果如下:
949(ks_c_5601-1987)和65001(UTF-8)版本的response.write都破了。还有什么我想念的吗?
答案 0 :(得分:1)
我认为您可以通过阅读此问题的解决方案来获得答案: internal string encoding
通过使用Reponse.Codepage
,您可以影响发布变量的解释方式。据我了解,您可以切换回您喜欢的编码。
[更新]
因为您使用的是iframe,所以在将请求发送回服务器时处理编码的浏览器。浏览器(据我所知)以与原始页面相同的编码发送数据。因此,如果包含iframe的页面A具有charset = Korean,我相信数据是使用韩文编码发送的。
是否在第A页的html标记中定义了字符集?如果没有,请添加它,然后尝试在第B页中使用相同的内容。
<meta charset="utf-8">
此外,由于“테스트”是受 FILE 编码影响的字符串文字,请确保以适当的编码保存asp文件。