2015-12-30 3 views
0

Я делаю веб-службу в C#, которые пишут с помощью HTTP RESPONE.WRITE Ответ json, но проблема в том, что я возвращаю json с некоторым полем, которое включало иудейский langauge , после того, что ответ JSON не полный конец кронштейн промах .. я поставил код в C# и ответ строки JSonПроблема с Json Response в C#, когда RESPONSE пишут два поля на иностранном языке

JSON ответ с древнееврейским полями

{"Response":"OK","FName":"איגור","LName":"kurylo","User_Name":"0524858214","ErrorMsg":"P 

ответ JSON регламентацию с английскими полями :

{"Response":"OK","FName":"igor","LName":"kurylo","User_Name":"0524858218","ErrorMsg":"Pass"} 

и -тиено- мой код в веб-службы это модель реакции JSon

public class Android_Reg 
{ 
    public string Response { get; set; } 
    public string FName { get; set; } 
    public string LName { get; set; } 
    public string User_Name { get; set; } 

    public string ErrorMsg { get; set; } 
} 

string l = Convert.ToString(jSon.Serialize(reg).ToString().Length); 
string jsonr = jSon.Serialize(reg).ToString(); 
var json = JsonConvert.SerializeObject(reg, Formatting.Indented); 
HttpContext.Current.Response.Clear(); 
HttpContext.Current.Response.Buffer = true; 
HttpContext.Current.Response.Charset = "utf-8"; 
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; 
HttpContext.Current.Response.ContentType = "application/json"; 
HttpContext.Current.Response.AddHeader("content-length", l); 

HttpContext.Current.Response.Flush(); 
HttpContext.Current.Response.Output.Write(jsonr); 

спасибо за помощь :)

EDIT: нормально я сделать некоторые испытания я debuig -Мои веб-сервис, и я найти вне следующий сведения после

string jsonr = jSon.Serialize(reg).ToString(); 

т его командованием jsonr получить следующую строку также с ивритом и английскими полями jsonr

"{\"Response\":\"OK\",\"FName\":\"igor\",\"LName\":\"kurylo\",\"User_Name\":\"0524858281\",\"ErrorMsg\":\"Pass\"}" 


"{\"Response\":\"OK\",\"FName\":\"איגור\",\"LName\":\"קורילו\",\"User_Name\":\"0524858270\",\"ErrorMsg\":\"Pass\"}" 

возможно becaouse поле \ строка обрезается и я проверить длину обоих OFTHE струны первая строка 92 charachters и второй является 92

+0

«ErrorMsg»: «P» вы уверены, что он отбрасывает фигурные фигурные скобки и не усекает строку каким-то образом? –

+0

Посмотрите на это, также обрезая строку, но это происходит только тогда, когда я вернусь на ивритовые поля langauge, смотрю другую строку json это полная строка –

+0

Мне было бы любопытно, если длина строки изменится, если она всегда усекает на P или в позиции символа (l.IndexOf (x))? Также, где reg? Есть ли другой класс или есть что Android_reg? –

ответ

2

Я не был в состоянии проверить это, но я думаю, что проблема заключается в длине строки в строке HttpContext.Current.Response.AddHeader("content-length", l);

длина ваших Еврейских струн пять, и количество пропущенных символов 5. Для кодирования иврита будет использоваться двухбайтовая кодировка, 5 отсутствующих символов. Если вы добавите в номер l количество символов на иврите, я верю, что проблема исчезнет. Чтобы проверить это, просто используйте l + 5.

+0

ok чувак, вы правы, я добавляю к l длина имени и фамилии и этой работы :) спасибо –

+0

@IgorKurylo, не проблема; если вам понравился ответ, не могли бы вы его принять. Спасибо –

+0

Я тоже думал! Ницца. –