PDA

View Full Version : سوال: مشکل با Encoding



mohammadjavad
چهارشنبه 27 اردیبهشت 1396, 10:17 صبح
با سلام
دوستان یه سوال داشتم ممنونم میشم راهنمایی کنید .
برای ارتباط با یک وب سرویس نیاز دارم که مقادیر Object های خودم را تحت یک template به صورت XML بفرستم . عملیات من به درستی انجام میشود ولی زمانه که یکی از object
های من دارای مقادیر فارسی باشد با مشکل روبه رو میشه ومقادیر رو زمان تیدیل به XML مبهم نمایش میده .


public string GetXmlFrom(CustomDto o)
{




XDocument xDocumnet = new XDocument();
xDocumnet.Declaration = new XDeclaration("1.0", "utf-8", null);

var root = new XElement("Request");

var header = new XElement("Header");
root.Add(header);
header.Add(new XElement("Version", "Version 0.1"));
header.Add(new XElement("ServiceName"));




var Body = new XElement("Body");
root.Add(Body);

Body.Add(new XElement("Code", Code));
Body.Add(new XElement("Code", Code));


var custom = new XElement("CustomDto");


custom.Add(new XElement("BirthCityCd", o.PlaceOfIssue.Code));


//DateTime dt = Convert.ToDateTime(o.BirthDate));


custom.Add(new XElement("BirthDate", o.BirthDate.Value.ToString("yyyymmmmdd")));
custom.Add(new XElement("CountryCd", o.Nationality.Select(x=>x.Code)));



custom.Add(new XElement("FName", o.FirstName));
custom.Add(new XElement("Father", o.FatherName));
custom.Add(new XElement("LName", o.LastName));
custom.Add(new XElement("LegalId", o.customName));
custom.Add(new XElement("NationalCd", o.NationalCode));
custom.Add(new XElement("PostCd", o.PostalCode));
custom.Add(new XElement("Sex", o.Gender));

Body.Add(custom);



xDocumnet.Add(CustomDto);

StringWriter writer = new Utf8StringWriter();
xDocumnet.Save(writer, SaveOptions.None);


var z = writer;
return z.ToString();




}


private class Utf8StringWriter : StringWriter
{
public override Encoding Encoding { get { return Encoding.UTF8; } }
}




تصویر دیباگ :


145237

_behnam_
چهارشنبه 27 اردیبهشت 1396, 21:06 عصر
سلام ،
ببینید مطلب زیر مشکلتون رو حل میکنه یا نه
http://stackoverflow.com/questions/3871738/force-xdocument-to-write-to-string-with-utf-8-encoding

mohammadjavad
یک شنبه 31 اردیبهشت 1396, 11:16 صبح
سلام ،
ببینید مطلب زیر مشکلتون رو حل میکنه یا نه
http://stackoverflow.com/questions/3871738/force-xdocument-to-write-to-string-with-utf-8-encoding

مشکل حل نشد با راه حل شما

با تشکر از شما من حتی تگ مربوطه رو اضافه کردم


<?xml version="1.0" encoding="UTF-8"?>





ولی زمان درج در دیتابیس به صورت زیر درج میشود تایپ دیتابیش من هم از نوع CLOB است



¿¿¿¿¿¿¿¿¿¿¿¿

mohammadjavad
یک شنبه 31 اردیبهشت 1396, 15:30 عصر
مشکل حل شد ،

در رجیستری ویندوز در مسیر اوراکل باید NLS_LANG رو با مقدار AMERICAN_AMERICA.UTF8 پر کنیم