c# - Fiddler 显示中文为问号

标签 c# asp.net fiddler multilingual

我正在使用 C# 和 Fiddler 测试网络服务。我的数据库存储了中文文本..在我的调试器中,我可以看到中文文本存储在一个 c# 变量 FINE 中,但是当我使用 c# 发布请求并在 fiddler 中调试它时,fiddler 将文本显示为问号 (???) .这是为什么?因此我的网络服务也将其视为 ????。

这是我的代码示例

public confirmationStatus Send(string phoneNumber, string text)
{

    messages_send model = new messages_send() { contacts = new List<string>() { phoneNumber }, text=text };
    string url = this.setupUrl();
    string dataToSend = new JavaScriptSerializer().Serialize(model);

    var cli = new WebClient();
    cli.Headers[HttpRequestHeader.ContentType] = "application/json;charset=utf-8";
    string response = cli.UploadString(url, dataToSend);

    return new JavaScriptSerializer().Deserialize<confirmationStatus>(response);

}

这就是 Fiddler 的看法。

POST https://api.***.com/v1/messages? HTTP/1.1
Content-Type: application/json
Host: api.**.com
Content-Length: 1061
Expect: 100-continue
Connection: Keep-Alive

{"contacts":["+1*****9"],"text":"**??HME??????** John,??? 01-01-0001 ???? 12:00 AM ? 12:00 AM? ????????????????????: Link: https://www.****.com/timesheets/?v=0 .Text STOP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     "}

最佳答案

问题是,.NET 默认将字符串编码为 UTF-16。因此 Fiddler 和我的网络服务无法正确编码并显示问号。

更改 HTTP header 的 ContentType 并没有解决问题。我更改了 WebClient 对象的编码并且它起作用了。

因此我的答案是...

        var cli = new WebClient();
        cli.Encoding = Encoding.UTF8;

在 .NET 中,我们可以更改流的编码,所以我相信这就是它起作用的原因。

关于c# - Fiddler 显示中文为问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50957130/

相关文章:

c# - Azure 事件中心 - 如何使用官方 SDK 并行消费事件?

c# - Unity 2018.2 - UNet 对接会仅适用于 LAN

https - 当运行 fiddler Outlook 停止工作时,我该如何解决这个问题?

c# - 哪个是 C# 和 .NET 的 "best"数据访问框架/方法?

c# - 如何从 2 个单独的文本文件创建组合列表?

javascript - 从 JQuery UI Popup 获取数据返回到表单

asp.net - CalendarExtender滚动后错误定位

javascript - 使用 jQuery 在回发时设置 img src

ssl - 用Fiddler4解密SSL3.3(SSL3 TLS1.2)

ajax - 如何在 fiddler 中放置多个断点?