处理通过QueryString传递的非英语字符串

时间:2012-09-05 10:41:59

标签: encoding asp-classic ascii urlencode

我正在尝试使用经典ASP处理通过QueryString传递的希伯来字符串。

我要求的网址: http://www.XXXX.com/myapp.asp?q =שלום

(שלום是希伯来文中的“和平”,一个由4个字母组成的单词)

在ASP端,我运行以下代码:

mstr = Request.QueryString("q")
for i=1 to Len(mstr)
   Response.Write  Asc(Mid(mstr, i, 1)) & "<br/>"
next 

此脚本生成以下输出: 215 169 215 156 215 149 215 157

8个ASCII字母,表示每个字母有两个ASCII符号(字节)。

我需要看到以下输出: 249 236 229 237

(ASCII表的顶部)

如何才能正确处理此类字符串? (查看原始字符串中发送的4个字母)。

1 个答案:

答案 0 :(得分:0)

http://www.XXXX.com/myapp.asp?q=שלום链接所在的html页面必须编码为 utf-8 。 因为浏览器会以与原始页面相同的编码对请求进行编码(最有可能)。

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

但是查询字符串应该始终是URL编码的。浏览器会自动为标准链接执行此操作,但如果您通过JavaScript构建URL,则必须自行处理URL编码。

其次,您必须将服务器端脚本(ASP)设置为在utf-8中工作。您可以通过将这些行放在顶部来实现此目的。

<%
    response.codepage = 65001
    response.charset = 'utf-8'
%>

了解更多internal string encoding