مشکل بک آپ گیری از اطلاعات فارسی در اکسل
سلام
من یه بار یه کامپوننت فرم ساز داشتم
این کامپوننت امکان بک آپ گیری از فرم ها رو با فرمت CSV برای اکسل داشت
همه چیز خوب بود و اطلاعات فرم ها درست دریافت میشد و اطلاعات به صورت کامل و درست به ایمیل هم ارسال میشد و در ایمیل قابل خوندن بود
ولی یه مشکل وجود داشت
وقتی از اطلاعات فرم ها بکاپ CSV میگرفتیم و اون رو تو اکسل باز میکردیم، اطلاعات انگلیسی به خوبی نمایش داده میشد ولی اطلاعات فارسی به صورت کاراکترهای ناخوانا نشون داده میشد! برسی کردم تمام چیزهایی که قابلیت بک آپ گیری برای اکسل رو دارن چه در جوملا و چه در مامبو و... با این مشکل مواجه هستند
مشکل از کجاست و چطور حل میشه؟
پی نوشت: مساله اصلا اون فرم ساز نیست، مساله مشکل با بکاپ گیری اطلاعات فارسی و خوندن اونها در اکسل هست که برای تمام امکانات این مشکل وجود داره، نمیخوام مشکل اون فرم ساز رو حل کنم چون اصلا دیگه ازش استفاده نمیکنم، کلا میخوام بدونم این مشکل برای چیه و چجوری حل میشه
پاسخ : مشکل بک آپ گیری از اطلاعات فارسی در اکسل
سلام. احتمالا مشکل از encoding دیتاها هست که باید UTF-8 باشه اما این گونه نیست.
یــــــــــــــــــاعــــ ـــــــــــلی
پاسخ : مشکل بک آپ گیری از اطلاعات فارسی در اکسل
اینکودینگ تمام فایلهای فرم ساز رو utf-8 کردم ولی هیچ تاثیری نداشت!
پاسخ : مشکل بک آپ گیری از اطلاعات فارسی در اکسل
[quote author=علی کاظم زاده link=topic=17867.msg94926#msg94926 date=1227948644]
سلام. احتمالا مشکل از encoding دیتاها هست که باید UTF-8 باشه اما این گونه نیست.
یــــــــــــــــــاعــــ ـــــــــــلی
[/quote]
سلام
دیتا نه فایل ...
یا علی
پاسخ : مشکل بک آپ گیری از اطلاعات فارسی در اکسل
اینکد دیتا رو هم utf-8 کردم ولی فایده ای نداشت!
چیکار کنم؟
برای تغییر اینکد دیتا خط زیر رو
کد:
header( "Content-type: application/vnd.ms-excel; charset=UTF-16LE" );
header("Content-disposition: attachment; filename=ckforms_" . date("Ymd").".csv");
$n=count( $fields );
for ($i=0; $i < $n; $i++)
{
$rowField = $fields[$i];
if ($rowField->typefield != 'button')
{
$unicode_str_for_Excel = mb_convert_encoding( $rowField->name, 'UTF-16LE', 'UTF-8');
$data .= "\"".$unicode_str_for_Excel."\"";
if ($i < $n-1) $data .= ";";
}
}
به خط زیر تبدیل کردم
کد:
header( "Content-type: application/vnd.ms-excel; charset=UTF-8" );
header("Content-disposition: attachment; filename=ckforms_" . date("Ymd").".csv");
$n=count( $fields );
for ($i=0; $i < $n; $i++)
{
$rowField = $fields[$i];
if ($rowField->typefield != 'button')
{
$unicode_str_for_Excel = mb_convert_encoding( $rowField->name, 'UTF-16LE', 'UTF-8');
$data .= "\"".$unicode_str_for_Excel."\"";
if ($i < $n-1) $data .= ";";
}
}