账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    C# 如何解决 POST 表单中的中文乱码问题?
    29
    0

    一个爬虫项目,需要以 POST 方式获取结果页面。
    Chrome 查看 POST 过程,发现其中的中文表单内容变成了方块乱码:������,当然,浏览器可以正确的发送请求获取结果(这不是废话。。。)
    然后我用代码模拟 POST 请求,发现只要表单出现中文,就无法获取正确的结果(结果总是为 0,因为查询乱码,网站的服务器肯定找不到乱码对应的结果啊)
    请问要如何解决乱码问题?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • じòぴé、殤 普通会员 1楼

      在C#中,如果要解决POST表单中的中文乱码问题,可以通过以下方法:

      1. 在服务器端进行编码和解码。可以使用System.Text.Encoding.UTF8对表单中的中文进行编码,然后在服务器端进行解码。

      csharp // 在服务器端 string encodedBody = Encoding.UTF8.GetString(new byte[] { Encoding.UTF8.GetBytes(formBody) });

      1. 使用HttpClient或者HttpClient具休化类的SendAsync方法发送POST请求。

      csharp // 使用HttpClient发送POST请求 HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Content-Type", "application/x-www-form-urlencoded"); string requestBody = "formBody中文字符编码为UTF-8"; var response = await client.PostAsync("http://example.com", new StringContent(requestBody, Encoding.UTF8, "application/x-www-form-urlencoded"));

      1. 在客户端进行解码。可以使用System.Text.Encoding.UTF8对服务器返回的响应进行解码。

      csharp // 在客户端 string decodedBody = Encoding.UTF8.GetString(response.Content);

      以上就是在C#中解决POST表单中的中文乱码问题的方法。需要注意的是,这种方法只能解决表单中的中文字符编码问题,对于HTML中的中文字符编码问题,需要在HTML中进行编码和解码。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部