Server.Encode / decode在生产服务器中不起作用

时间:2009-12-14 17:57:38

标签: asp.net

我将一个vb.net查询字符串传递给一个页面,根据参数,它上面有一个西班牙语字符,它在开发和测试服务器上完美运行,但不在生产中。

因此,在查询字符串中,我编码的名称如下:

Server.UrlEncode(name)

即使在加载之前,服务器也会抛出“500 Internal Server Error” 用这个网址:

http://website/Dir/Page.aspx?num=CEJMEJINMFCEGICCEH&name=Jose+Bonse%c3%b1or+Del+Rosario

当我将%c3%b1替换为任何其他普通字母时,它有效(%c3%b1是“ñ”)

同样,它在其他服务器上运行得很好,除了生产,我甚至不知道从哪里开始看..

2 个答案:

答案 0 :(得分:3)

HttpServerUtility类(“Server”是Page基类中的一个实例)默认使用ASCII来解码和编码URL参数。当然,ASCII不足以处理其他本地化。要强制使用Unicode,请尝试使用UrlEncodeUnicode类的HttpUtility函数代替...

HttpUtility.UrlEncodeUnicode(name)

答案 1 :(得分:1)

有两件事让人想起,虽然我不能说我实际上已经在这种特定情况下测试过(请求字符串编码)。

首先,您的页面是如何编码的?也就是说,你是否指出使用的字符集?

其次,如何配置服务器计算机:本地化?我将比较三台计算机上控制面板中的“区域和语言选项”。

最后(好的,那就是三个)Web.Config中有本地化选项。通常情况下,CodeProject对此主题有great article

祝你好运!