PDA

View Full Version : مشکل در دریافت کارکتر های فارسی از کاربر در IE8



alirayaneh
چهارشنبه 24 آذر 1389, 01:15 صبح
با سلام
من مدتی پیش یک برنامه آجاکس برای جستوجو در دیتابیس نوشتم این برنامه در مرورگرهای firfox , opera , googlechorome
در ست کارمیکنه اما در IE8 وقتی کاربری متنی رو به فارسی در فیلد جستوجو وارد میکنه این متن کارکتر هاش
به شکل زیر وارد برنامه میشود
سلام ==> ��

لازم به ذکره که از تابعه

mysql_query('SET NAMES utf8');
هم در کد صفحه استفاده کردم
و همچنین خاصیت meta صفحه رو به این شکل ست کردم
charset=utf-8"


مشکل از کجاست ؟

funpatogh
چهارشنبه 24 آذر 1389, 01:19 صبح
collation دیتابیست هم utf8_persian_ci هست؟

alirayaneh
چهارشنبه 24 آذر 1389, 01:40 صبح
با تشکر ازشما
ببینید من این مورد رو حتی بدون دیتا بیس هم انجام دادم یه رشته فارسی رو به صورت آجاکسی به یه صفحه دیگه فرستادم در IE8 دوباره همین مشکل هست یعنی رشته ارسالی توسط صفحه html به صفحه php پس از دریافت و چاپ به شکل کارکتر زیر نمایش داده میشه
��
برای نمونه این مثال رو توی IE8
امتحان کنید
http://www.w3schools.com/php/php_ajax_livesearch.asp

alirayaneh
پنج شنبه 25 آذر 1389, 14:21 عصر
با سلام مجدد

من یسری جستوجو کردم و توی این صفحه http://php.net/manual/fr/function.urldecode.php
تا بع زیر رو پیدا کردم

function to_utf8( $string ) {
// From http://w3.org/International/questions/qa-forms-utf-8.html
if ( preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string) ) {
return $string;
} else {
return iconv( 'CP1252', 'UTF-8', $string);
}
}
که این تابع رو تو صفحه دوم یا همون صفحه php که مقادیر ارسالی بروش آجاکس از صفحه اول رو دریافت میکنه

$string= to_utf8($_GET['Farsistring']);با کد بالا رشته فارسی رو دریافت کردم چاپ کردم اینبار خروجی تو مرورگرای دیگه مثل قبل درست بود اما توی IE8 به شکل زیر نمایش داده میشه
قبل از استفاده از تابع

سلام => ��

بعد از استفاده از تابع
سلام => ÓáÇã

حالا باید چیکار کرد؟

Mr.Moghadam
پنج شنبه 25 آذر 1389, 15:34 عصر
ار توابع

utf8_decode (http://php.net/manual/en/function.utf8-decode.php)
utf8_encode (http://www.php.net/manual/en/function.utf8-encode.php)

استفاده کن شاید کارت راه بیافته

درضمن اگه کدت رو قرار بدی بهتره

alirayaneh
پنج شنبه 25 آذر 1389, 19:13 عصر
دوستان راه حل رو به کمک یکی از دوستان در مجید انلاین پیدا کردم
چون حدس میزدم افراد دیگه ای هم با این مشکل مواجه شن ، وظیفه خودم دونستم بگم

encodeURI(str)
دستور بالا رو در کد جاوای مربوط به صفحه اول که وظیفه دریافت مقادیر از کاربر و ارسال اون به صفحه دوم رو داره
به همین سادگی
مشکل ما با IE8 حل شد

parselearn
پنج شنبه 25 آذر 1389, 19:36 عصر
آیا این کد جاوا اسکریپت هست؟
من یک زمانی یک سبد خرید ایجکس درست کرده بودم که در ie6 همین مشکل به هم ریخت حروف فارسی رو داشت
آیا با این تابع مشکل حل میشه
البته اگر php باشه بهتره

alirayaneh
پنج شنبه 25 آذر 1389, 20:48 عصر
سلام parselearn (http://barnamenevis.org/member.php?48732-parselearn) جان

این کد جاوا اسکریپ

narsic
جمعه 26 آذر 1389, 09:56 صبح
با سلام
دوست عزیز parselearn بله این کد مشکل شما را هم حل میکند چون این کد باعث Code شدن کلمات UTF-8 میشه البته معمولا برای IE از این روش استفاده میشه ولی فایر فاکس از UTF-8 پشتیبانی میکنه .
دوست عزیز alirayaneh میتونستید صفحه دوم رو هم به صورت UTF-8 ذخیره کنید تا حد زیادی مشکلتون حل میشد .
البته من خودم دیگه اجازه نمیدم مرورگر IE6 به سایتم وارد شه :چشمک:
موفق باشید