PDA

View Full Version : بهم ریختگی کاراکترهای فارسی با آژاکس



mrrajabi
یک شنبه 04 مرداد 1388, 12:13 عصر
سلام,
من از بانک اطلاعات یه سری رکورد با متد GET می خونم و با alert جاوااسکریپت چاپشون می کنم. این کار برای کاراکترهای انگلیسی مشکلی نداره ولی حروف فارسی کلاً به شکل کد اسکی میشن.چه راه حلی وجود دارد؟
با تشکر

dannydolph
یک شنبه 04 مرداد 1388, 17:19 عصر
این مسئله به encoding صفحت مربوط میشه.موقعی که داری صفحه رو ایجاد میکنی باید انکدینگ رو روی یونیکد تنظیم کنی.اگه بگی از چه برنامه ای استفاده میکنی شاید بتونم بگم چه کار کنی.

mrrajabi
دوشنبه 05 مرداد 1388, 09:08 صبح
من از Nusphere استفاده مي كنم. انکودینگ صفحه هام Windows-1256 هست كه وقتی به UTF-8 تغييرش دادم, داده های خوانده شده از بانک تغییری نکرد ولی اطلاعات فارسی درست نمایش داده شد(منظور اطلاعاتی است که در خود فایل php چاپ مي كنم)

dannydolph
سه شنبه 06 مرداد 1388, 09:49 صبح
این کاری که شما کردی مربوط به نمایش اطلاعات هست و طبیعیه که اطلاعات توی بانکت درست نشن.حالا مشکلت حل شده یا نه؟اگه میخوای بانک رو هم درست کنی میتونی collation اون فیلد مورد نظرت رو به utf8_persian_ci یا utf8_unicode_ci تغییر بدی.

mrrajabi
سه شنبه 06 مرداد 1388, 10:22 صبح
مشكل من حل شد. این کار با تنظیم انکودینگ روی UTF-8 حل میشه. ولی یه سوال؟
آژاکس برای فرمت Windows-1256 هیچ راه حلی نداره که کاراکترهای فارسی/عربی رو درست نمایش بده؟
متشکرم

mrrajabi
سه شنبه 06 مرداد 1388, 13:01 عصر
مشکل قبلی که حل شده است. حالا وقتی می خوام که همین اطلاعاتو بنویسم تو یه فایل Excel مطالب فارسی کلاً به شکل نادرست نوشته میشن.
کدهای PHP :

function GenerateExcelFile() //function to generate excel file
{

foreach ($this->titles as $title_val)
{
$header .= $title_val."\t";
}
foreach($this->all_values as $key=>$rec)
{
$line = '';
foreach($rec as $value)
{
if ((!isset($value)) OR ($value == ""))
{
$value = "\t";
} //end of if
else
{
$value = strReplaceChar($value);
$value = str_replace('"', '""', $value);
//$value = mb_convert_encoding($value, "UTF-8");
$value = htmlentities($value, ENT_QUOTES, 'UTF-8');
$value = '"' . $value . '"' . "\t";

} //end of else
$line .= $value;
} //end of foreach
$data .= trim($line)."\n";
}//end of the while
$data = str_replace("\r", "", $data);
if ($data == "")
{
$data = "\n(0) Records Found!\n";
}
//echo $data;
//header("Content-type: application/vnd.ms-excel; charset=utf-8");

header("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
header("Content-Disposition: attachment; filename=$this->filename");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";
چطور میشه با پی اچ پی یه فایل اکسل با هدر یونیکد درست کرد؟
با تشکر

mrrajabi
چهارشنبه 07 مرداد 1388, 13:08 عصر
از دوستان کسی راجع به این مشکل ما راه حلی نداره؟
مسئله : هنگام ارسال داده به اکسل, کاراکترهای فارسی درست نمایش داده نمی شن. من باید هدر فایل رو با UTF-8 تنظیم کنم, اینکارو کردم ولی جواب نمیده!؟!؟
یه سری راه حل هست که از کلاسهای Pear براي نوشتن در فایل اکسل استفاده می کنند. حالا با توجه به کدی که بالا گذاشتم, کسی چیزی به نظرش نمی رسه که همینو درستش کنم؟؟؟
با تشکر

amirepsilon
چهارشنبه 17 آذر 1389, 07:29 صبح
مشکل با excel رو من هم دارم که هنوز نتونستم حلش کنم !!!