PDA

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



سار
شنبه 05 مرداد 1387, 16:26 عصر
با دورد فراوان
من دارم با استفاده از کد زیر یک XML تولید می کنم و اون رو به یک فایل فلش میدم تا نمودار اون رو بکشه



StringBuilder xmlData = new StringBuilder();
xmlData.AppendFormat(@"<chart basefont=""Tahoma"" direction=""rtl"" showValues=""0"" formatNumberScale=""0"" showBorder=""1"">");
foreach (ARPC.Production.Production production in ARPC.Production.Querys.GetDaily())
{
xmlData.AppendFormat("<set label='{0}' value='{1}' />",
production.Name,
production.Value.ToString());
}
xmlData.Append("</chart>");
Response.ContentType = "text/xml; codepage=windows-1256
";
Response.Write(xmlData.ToString());


اگر فلش رو به یک XML فیزیکی وصل کنم همه چیز درست هست ولی با این روش کاراکتر های فارسی رو نمایش نمیده.
در XML فیزیکی هم من CodePage رو برابر با windows-1256 قرار دادم و درست نمایش میده.

ممکنه راهنمایی کنید.

raravaice
یک شنبه 06 مرداد 1387, 03:00 صبح
Code Page صفحه مهم نیست.
مهم اینه که کاراکتر های شما به صورت Unicode ذخیره بشن در حالت اجرا شما این تبدیل رو انجام ندادی ولی وقتی ذخیره میکنی به صورت پیش فرض Unicode ذخیره میشه و اگر فایل رو با یه Editor HEX باز کن از روی دو بایت اول میتونی به این نکته پی ببری که فایل Unicode ذخیره شده.
البته یادم هست که دات نت 1 با Load کردن XML که Unicode ذخیره شده مشکل داشت ولی از 2 به بعد ظاهرا رفع شده.
شما از کلاس Encode در فضای نام TEXT استفاده کن و کاراکتر هات رو به صورت UTF8 استریم کن و سعی کن برای بهینه بودن کار از Webhandler استفاده کنی"ashx"

مورد دیگه اینکه توی دات نت 3 نوع متغیر XML اضافه شده که واقعا کار شگرفی بوده ولی چون زیاد اطلاعات ندارم دربارش بهت پیشنهاد نمیدم ولی راجع بهش تحقیق کن چیزه جالبی هست.

موفق باشید

سار
یک شنبه 06 مرداد 1387, 09:20 صبح
موضوع فقط خود XMLهست و بس، چون وقتی فایل فیزیکی وجود داره همه چیز درست هست ولی وقتی با روشی که کدش رو نوشتم XML رو تولید می کنم خراب میشه.
در مورد ذخیره با UniCode هم، میدونم که دارم این کار رو انجام میدم.

Behrouz_Rad
یک شنبه 06 مرداد 1387, 13:33 عصر
به جای windows-1256 از UTF-8 استفاده کن ببین چی میشه.
اگر نتیجه نگرفتی، با همون تکه کدی که نوشتی، فقط عبارت ;1740& رو بر روی صفحه نمایش بده و ببین که آیا حرف "ی" نمایش داده میشه یا علامت سوال.

موفق باشید.

سار
یک شنبه 06 مرداد 1387, 15:51 عصر
خیلی ممنونم بهروز خان و همینطور از شما جناب raravaice (http://barnamenevis.org/forum/member.php?u=37086)
راستش شرکت تولید کنند این فلش ها گفته اگر از UTF-8 استفاده کنی همه چیز درست هست ولی راستش خالی بسته چون در 1256 هست که درست نمایش میده.
مشکل من با اضافه کردن تگ CodePage حل شد.


<%@Page Language="C#" CodeFile="ProductionDaily.aspx.cs" Inherits="Data_ProductionDaily" CodePage="1256"%>


فقط نمیفهمم چرا کدر زیر که باید همین عمل رو انجام میداد قادر به حل این موضوع نبود

Response.ContentType = "text/xml; codepage=windows-1256";