我将从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)