【问题标题】:Url Encoding method for Special Character in c#c#中特殊字符的Url编码方法
【发布时间】:2012-06-21 12:51:45
【问题描述】:

我使用post方法提交数据,并且我已经使用过

HttpUtility.UrlEncode(string data)

用于数据的 URL 编码。但是对于某些特定的字符串,服务器端的数据显示与我提交的不同。

前:

string data = "¦=¦=¦";
data = HttpUtility.UrlEncode(data);

向服务器提交数据后,它显示字符串为¦=¦=¦,但原始字符串为¦=¦=¦

我应该使用哪个 url 编码可以将 "(" 编码为 %28 , ")" 编码为 %29 。我可以找到这个。

我也使用了 HttpUtility.UrlEncodeUnicode ,HttpUtility.UrlPathEncode 但不起作用。 哪种url编码适合这种类型的字符串?

【问题讨论】:

    标签: c# http urlencode vbulletin


    【解决方案1】:

    使用 HttpUtility.UrlDecode(data) 将其返回为 "¦=¦=¦"

    【讨论】:

    • 我建议您在每一侧保持相同的编码,例如 string data = "¦=¦=¦"; data = HttpUtility.UrlEncode(data, Encoding.UTF8); string dataOnServerSide = HttpUtility.UrlDecode(data, Encoding.UTF8);
    • 你可以通过创建自定义HttpHandlermsdn.microsoft.com/en-us/library/bb398986.aspx实现从服务器端解码
    • 对我不起作用。我可以发现问题出在我的代码上还是其他问题?
    • 我认为我在发送该数据流时遇到问题,但不确定。
    • 如果你还没有,安装 Fiddler2 并使用它来跟踪请求和数据,检查原始格式,它会让你更好地了解发生了什么
    【解决方案2】:

    在您的代码示例中,您使用 ASCII 作为字符“¦”,这不是有效的 ASCII 字符。 使用 Unicode,它可能会起作用。

    System.Text.UnicodeEncoding uni = new UnicodeEncoding();
    byteArray = uni.GetBytes(data);
    

    【讨论】:

    • 您正在使用 ASCII 字符“¦”,这不是有效的 ASCII 字符。使用 Unicode,它可能会起作用。
    • 你能再次显示你正在使用的代码吗,因为当我测试这个时,我得到了 ¦=¦=¦ 正如预期的那样。但是我使用的是 MVC 控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    相关资源
    最近更新 更多