gpt4 book ai didi

unicode - StreamReader 读取\u00fc 但 Postman 读取正常

转载 作者:行者123 更新时间:2023-12-04 15:28:16 27 4
gpt4 key购买 nike

可能是重复的问题,但我找不到我的问题的答案。我有这个代码来调用网络服务:

        var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://172.21.122.1:5001/autocomplete");

httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
//tried this too: httpWebRequest.Accept = "gzip, deflate";

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write("{ \"message\" : \"mü\" }");
streamWriter.Flush();
streamWriter.Close();
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

response = "";
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
response = streamReader.ReadToEnd();
}

但无论我用 StreamReader() c'tor 尝试过什么编码,我都会得到这样的响应或更糟的响应:{"words":["m\u00fc\u015fteri","m\u00fc\u015fterisiyim""]}

当我使用 Postman 或 SoapUI 以相同的请求调用相同的服务时:{"message": "mü"},响应看起来不错:{"words": ["müşteri","müşterisiyim"]}

奇怪的是:相同的代码可以与许多其他服务一起使用。只有这个特定的服务没有正确编码响应。我们认为该服务存在编程错误,但我想知道 Postman 或 SoapUI 是如何处理这个问题的。他们的代码中应该有一个控件,如果响应包含“\uxxxx”,那么 Postman 或 SoapUI 会再次对其进行解码。

我已经检查了 Postman 和 SoapUI 中的所有请求/响应 header ,但没有成功。可能是什么原因?

Postman screen SoapUI screen

最佳答案

您必须确保您的请求编码正确:将内容类型设置为:

httpWebRequest.ContentType = "application/json;charset=UTF-8";

检查请求正文是否也是 UTF-8 编码的。将 StreamWriter 编码也设置为 UTF-8:

...

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream(), Encoding.UTF8))

...

如果您从其他来源获取请求内容,请确保也使用 UTF-8 编码读取它。

关于unicode - StreamReader 读取\u00fc 但 Postman 读取正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61816582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com