مشکل در دریافت کارکتر های فارسی از کاربر در ie8
با سلام
من مدتی پیش یک برنامه آجاکس برای جستوجو در دیتابیس نوشتم این برنامه در مرورگرهای firfox , opera , googlechorome
در ست کارمیکنه اما در IE8 وقتی کاربری متنی رو به فارسی در فیلد جستوجو وارد میکنه این متن کارکتر هاش
به شکل زیر وارد برنامه میشود
سلام ==> ��
لازم به ذکره که از تابعه
mysql_query('SET NAMES utf8');
هم در کد صفحه استفاده کردم
و همچنین خاصیت meta صفحه رو به این شکل ست کردم
charset=utf-8"
مشکل از کجاست ؟
ببینید من این مورد رو حتی بدون دیتا بیس هم انجام دادم یه رشته فارسی رو به صورت آجاکسی به یه صفحه دیگه فرستادم در IE8 دوباره همین مشکل هست یعنی رشته ارسالی توسط صفحه html به صفحه php پس از دریافت و چاپ به شکل کارکتر زیر نمایش داده میشه
��
برای نمونه این مثال رو توی IE8
امتحان کنید
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
من یسری جستوجو کردم و توی این صفحه
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
تا بع زیر رو پیدا کردم
[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]که این تابع رو تو صفحه دوم یا همون صفحه php که مقادیر ارسالی بروش آجاکس از صفحه اول رو دریافت میکنه
[PHP]$string= to_utf8($_GET['Farsistring']);[/PHP]با کد بالا رشته فارسی رو دریافت کردم چاپ کردم اینبار خروجی تو مرورگرای دیگه مثل قبل درست بود اما توی IE8 به شکل زیر نمایش داده میشه
قبل از استفاده از تابع
سلام => ��
بعد از استفاده از تابع
سلام => ÓáÇã
حالا باید چیکار کرد؟