我将一个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
是“ñ”)
同样,它在其他服务器上运行得很好,除了生产,我甚至不知道从哪里开始看..
答案 0 :(得分:3)
HttpServerUtility
类(“Server”是Page基类中的一个实例)默认使用ASCII来解码和编码URL参数。当然,ASCII不足以处理其他本地化。要强制使用Unicode,请尝试使用UrlEncodeUnicode
类的HttpUtility
函数代替...
HttpUtility.UrlEncodeUnicode(name)
答案 1 :(得分:1)
有两件事让人想起,虽然我不能说我实际上已经在这种特定情况下测试过(请求字符串编码)。
首先,您的页面是如何编码的?也就是说,你是否指出使用的字符集?
其次,如何配置服务器计算机:本地化?我将比较三台计算机上控制面板中的“区域和语言选项”。
最后(好的,那就是三个)Web.Config中有本地化选项。通常情况下,CodeProject对此主题有great article。
祝你好运!