2014-10-07 3 views
0

Я возвращаю китайские символы из Web Api и следующий код, используемый для анализа ответа.Неожиданный символ, встречающийся при разборе значения: 筛

 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()); 

Неожиданный символ встречается при анализе значения: 筛 Он отлично работает на английском языке, но не для китайцев. Я уверен, что это проблема с кодировкой. Нужна помощь

Я судил Unexpected character encountered while parsing value, но понятия не

ответ

1

Я построил быстрый тест образца с контроллером Web API, который будет возвращать некоторые китайские строку, и использовать измененную версию кода клиента, чтобы прочитать ответ.

Отклик действительно был символом мусора при использовании кодировки Юникода. Изменение его на UTF8, как показано ниже, устранило проблему.

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

Обратите внимание, что большинство времени, кодирование для XML/JSON является UTF8, если услуга не на самом деле делает некоторые Unicode (UTF16 Little Endian)

Смежные вопросы

 Смежные вопросы