【问题标题】:How to take the querystring value without default decoding?如何在没有默认解码的情况下获取查询字符串值?
【发布时间】:2012-02-16 13:56:04
【问题描述】:

我的 ASP.net Web 应用程序正在从另一个应用程序获取一个带有名为 title 的查询字符串的请求。

例如:www.abcdefg.com?title=&Aper%e7u+du+r%e9gime

注意:查询字符串是具有重音字符的法语单词。 文本“Aperçu du régime”已使用“ISO-8859-15”编码生成查询字符串文本。

问题 当我使用

访问查询字符串时
Request.QueryString["title"]

我会得到一个没有重音字符的解码文本。

例如:Aper�u du r�gime

所以我的问题是,ASP.Net 中是否有任何方法(例如:元数据)告诉服务器要么不 使用特定解码器进行解码或解码 例如:“ISO-8859-15”

一旦我能够获得完全相同的查询字符串文本,我就可以使用 HttpUtility.UrlDecode 来生成实际的法语文本。

【问题讨论】:

    标签: asp.net encoding


    【解决方案1】:

    您可以在 web.config 中使用 <globalization> 元素来指定请求编码:

    <globalization requestEncoding="iso-8859-15" />
    

    【讨论】:

    • @RoyiNamir - 如果 URL 未编码为 UTF-8(在这种情况下,它们不是),则不会。
    • @RoyiNamir,没有。他的查询字符串不是 utf-8 编码的,所以你会得到垃圾。
    • 如何在js中制作utf8查询字符串?
    • @RoyiNamir,你可以使用encodeURIComponent函数。
    【解决方案2】:

    http://msdn.microsoft.com/en-us/library/ms150047.aspx

    using System.Web;
    using System.Text;
    
    HttpUtility.ParseQueryString(query, Encoding.GetEncoding("iso-8859-15"))[yourParamName];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 2013-07-03
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多