【问题标题】:Converting the Special characters in HttpContext to string将 HttpContext 中的特殊字符转换为字符串
【发布时间】:2016-07-01 09:39:33
【问题描述】:

我在 web 服务中有以下代码来读取帖子数据。这里的问题是每当请求包含特殊字符时,比如说“amé”,该字符在转换为字符串时被替换为 am�。

 byte[] postData= HttpContext.Request.BinaryRead(HttpContext.Request.ContentLength);
 string strReq = Encoding.UTF8.GetString(postData);

我使用以下代码调用 WebService:

WebClient webClient = new WebClient();
webClient.Headers["Content-type"] = "text/xml; charset=utf-8";
webClient.Headers[HttpRequestHeader.Authorization] = credentials;
string output = webClient.UploadString(url, "POST", input);

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您需要在您的网络服务中指定发布数据采用 UTF-8 编码,否则您将无法将其解码为 UTF-8。将charset=utf-8 添加到content-type 标头的末尾应该可以解决问题。

    例如

    'content-type': 'text/xml; charset=utf-8'
    

    请注意,JSON 和表单编码的 POST 数据的规范需要 UTF-8。

    【讨论】:

    • Thanx Mourndark.. 我能够用上面的代码解码 post 数据,除了 post 数据中的特殊字符,如 é 没有反映在解码的字符串中
    • 是的,以 ASCII 编码的常规拉丁字符可以在 UTF-8 中正常解码,因此不能保证。我仔细查看了 �,它是 U+FFFD,即在发现无效字符时插入的 Unicode 替换字符。请参阅this answer 了解更多信息。
    猜你喜欢
    • 2013-03-08
    • 1970-01-01
    • 2015-02-20
    • 2019-02-17
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2019-05-02
    相关资源
    最近更新 更多