[英]C# HttpRequest and different encodings
这是我的问题。 我有一个ASP.NET / C#网站,通过GET / POST接收一些数据
这是“用户填充”数据,但不是通过网页,它是与我的服务器联系的软件。
问题是,该软件正在发送以ISO-8859-1编码的数据(因此Café将作为Caf%e9发送),其余的SW / DB是Unicode
此外,数据完全被破坏,恢复已发送的内容:/
处理这个问题的最佳方法是什么?
我尝试设置Request.ContentEncoding(在阅读之前),但没有用。
这里唯一有用的是将以下代码添加到web.config:
<configuration>
<system.web>
<globalization requestEncoding="iso-8859-1"/>
</system.web>
</configuration>
然后使用
Request["varName"]
不要使用HttpUtility.UrlDecode
或HttpUtility.UrlEncode
,这些只能用于原始查询字符串。 请求[]已经为您解码。
感谢JamesP自己发布这个想法。
%e9只是é但UrlEncoded。 Server.UrlDecode您的请求字符串。
看着
短:
在web.config中写
<configuration>
<system.web>
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-US"
uiCulture="de-DE"
/>
</system.web>
</configuration>
删除aspx头中的编码条目。
如果utf-8不正确,请尝试使用utf-16
我希望这有帮助。
这个问题的原作者。
帮助我的是Georg建议设置Web.config变量,我把它
requestEncoding = “ISO-8859-1”
现在一切正常,谢谢!
如果我理解正确,您将从HTTP请求中提取此信息。 我将假设它是编码中的HTTP请求主体。
您可以使用System.Text.Encoding.GetEncoding(...)来检索ISO-8859-1的Encoding对象。 然后在该编码对象上调用GetDecoder(),并使用它来解释请求体。 理想情况下,您可以从请求中的标头值确定从Encoding.GetEncoding(...)加载的编码类型,因此支持具有不同配置的服务器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.