这是我的问题。我有一个ASP.NET / C#网站,它通过GET / POST
接收一些数据这是“用户填写”的数据,但不是通过网页,它是与我的服务器联系的软件。
问题是,该软件正在发送以ISO-8859-1编码的数据(因此Café将作为Caf%e9发送),其余的SW / DB是Unicode
此外,数据完全被破坏,恢复已发送的内容:/
处理这个问题的最佳方法是什么?
我尝试设置Request.ContentEncoding(在阅读之前),但没有用。
答案 0 :(得分:3)
答案 1 :(得分:1)
%e9只是é但UrlEncoded。 Server.UrlDecode您的请求字符串。
答案 2 :(得分:1)
看看
How to: Select an Encoding for ASP.NET Web Page Globalization
短:
在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
我希望这会有所帮助。
答案 3 :(得分:1)
此处问题的原作者。
帮助我的是Georg建议设置Web.config变量,我把
requestEncoding = “ISO-8859-1”
现在一切正常,谢谢!
答案 4 :(得分:0)
如果我理解正确,您将从HTTP请求中提取此信息。我将假设它是编码中的HTTP请求主体。
您可以使用System.Text.Encoding.GetEncoding(...)来检索ISO-8859-1的编码对象。然后在该编码对象上调用GetDecoder(),并使用它来解释请求体。理想情况下,您可以从请求中的标头值确定从Encoding.GetEncoding(...)加载的编码类型,因此支持具有不同配置的服务器。