您好!
有一个控制器和一个动作通过GET接收一个参数,大约在这里:
www.site.com/controller/action/?query=параметр&l; - 俄语单词
问题:
示例1:www.site.com/controller/action/?query=Пример< - 俄语单词
示例2:www.site.com/controller/action/?query=Example
阅读参数:
var param = Request.QueryString["query"];
结果1:
param = "������"
来自调试器的数据:
Request.RawUrl = "/controller/action/?q=%CF%F0%E8%EC%E5%F0"
QueryString = {q=%ufffd%ufffd%ufffd%ufffd%ufffd%ufffd}
结果2:
param = "Example"
来自调试器的数据:
Request. RawUrl = "/controller/action/?q=Example"
QueryString = {q=Example}
ContentEncoding设置为UTF-8。
Web.config:
<globalization requestEncoding="utf-8" responseEncoding="utf-8"
fileEncoding="utf-8" />
问题: 我怎样才能正确地用俄语单词获得参数?
答案 0 :(得分:2)
你永远不应该在URI中使用俄语单词(идженестоитпробовать)。你应该对它们进行编码。
RFC 1738:统一资源定位符(URL)规范
..只有字母数字[0-9a-zA-Z],特殊字符“$ -_。+!*'(),”[不包括引号 - ed]和用于保留目的的保留字符可以在URL中使用未编码的。
如果您的用户打算用俄语输入网址 - (搜索),您可以尝试UrlDecode Request.Url
答案 1 :(得分:1)
您需要UrlEncode查询字符串值。
答案 2 :(得分:0)
HttpUtility.UrlDecode(Request.QueryString["q"], Encoding.Default)
解决了这个问题。