分析值时遇到意外字符:筛.



我将从WebApi返回中文字符,并返回用于解析响应的以下代码。

        StringBuilder sb = new StringBuilder();
        byte[] buf = new byte[8192];
        string tempString = null;
        var request = (HttpWebRequest)HttpWebRequest.Create(endpoint);
        request.Accept = "application/json";
        request.ContentType = "application/json";
        request.Method = method;
        var inputSerializer = new DataContractJsonSerializer(typeof(T));
        var outputSerializer = new DataContractJsonSerializer(typeof(T[]));
        var requestStream = request.GetRequestStream();
        inputSerializer.WriteObject(requestStream, pun);
        requestStream.Close();
        var response = request.GetResponse();
        Stream resstream = response.GetResponseStream();
        int count = 0;
        do
        {
            count = resstream.Read(buf, 0, buf.Length);
            if (count != 0)
            {
                tempString = Encoding.Unicode.GetString(buf, 0, count);
                sb.Append(tempString);
            }
        }
        while (count > 0);
        {
            //Response.Write(sb.ToString() + "<br/><br/>");
            // string[] val = sb.ToString().Split('"');
        }

        if (response.ContentLength == 0)
        {
            response.Close();
            return default(T[]);
        }
        T[] responseObject = JsonConvert.DeserializeObject<T[]>(sb.ToString());

分析值时遇到意外字符:筛它适用于英语,但不适用于汉语。我确信是编码问题。需要帮助

我引用了解析值时遇到的意外字符,但没有线索

我使用Web API控制器构建了一个快速样本测试,该控制器将返回一些中文字符串,并使用客户端代码的更改版本来读取响应。

使用Unicode编码时,响应确实是垃圾字符。如下图所示,将其更改为UTF8解决了问题。

tempString = Encoding.UTF8.GetString(buf, 0, count);

请注意,大多数情况下,XML/JSON的编码是UTF8,除非服务真的在做一些Unicode(UTF16 Little Endian)

相关内容

  • 没有找到相关文章

最新更新