PDA

View Full Version : مشکل با اطلاعات فارسی در AJAX



m.abri
شنبه 06 اسفند 1390, 22:08 عصر
من از phpmyadmin1.8 استفاده می کنم - وقتی با استفاده از کدهای Ajax و php اطلاعاتی در جداول mysql بصورت فارسی می نویسم چیزی درج نمی شود == یعنی فیلد کلا خالی نشان داده می شود!!!!!!
لازم به ذکر می دانم که :
1- کالیژن پایگاه داده ، جداول و فیلدهای لازم در utf8_persian_ci تنظیم شده است.
2- کدهای زیر در ابتدای صفحات قرار داده شده است:
mysql_query("SET character_set_results=utf8 , character_set_client=utf8 , character_set_connection=utf8 , character_set_database=utf8 , character_set_server=utf8",$conn);
mysql_query("SET SESSION collation_connection = 'utf8_persian_ci'");
mysql_query("SET NAMES UTF8");
mysql_query("SET CHARACTER SET UTF8");
3- در صفحات html ام کد زیر را دارم :
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

بعد از کلی مطالعه به این نتیجه رسیدم که شاید از تنظیمات فایل php.ini یا فایلهای کتابخانه ای دیگر باشد -- آیا کسی اطلاعاتی در این مورد دارد؟؟؟؟؟
(در ضمن ورژن بالای phpmyadmin را هم دانلود کرده و نصب کردم ولی چون کتابخانه GD2 از قسمت phpextension در آن ورژن با تیک زدن قسمت مربوطه به درستی کار نکرد مجبور شدم موقتا از ورژن قدیمی استفاده کنم چون برنامه من جهت راه انداز شدن به این کتابخانه نیاز دارد.)
خیلی وقته معطلم و آنقدر مطالعه کردم ولی به نتیجه نرسیدم ... لطفا به خاطر خدا کمک کنید ؟؟؟؟؟؟؟؟؟

امیـرحسین
شنبه 06 اسفند 1390, 22:34 عصر
به phpmyadmin چیکار داری؟ کد AJAX که نوشتی رو دیباگ کن که داره اشتباه کار میکنه. هر مرحله یه خروجی رو die کن. فایرباگ و کنسول‌ها این خروجی رو نمایش میدهند میتونی بفهمی مثلا تا فلان خط برنامه درسته و ....

mhdsherafat
شنبه 06 اسفند 1390, 23:03 عصر
سلام هموطن
همون طور که دوست گرامیمون گفت اوا مطمئن شو که فایل ajax درست کار میکنه. مخصوصا از اتصال به پایگاه داده در هنگام استفاده از دستور mysql_connect() مطمئن شو. در هر مرحله از کد اجکس هم خطا ها و متغیر ها رو echo کن و در فایل جاوا اسکریپتی که اون فایل رو فراخونی می کنه پس از دریافت response اجکس در تابع ارجاع داده شده در XmlHttpRequest حتما اونو با دستور alert(respponse ) نمایش بده تا خروجی پیغام خطا ها رو ببینی.
یکبار هم امتحان کن و دستور mysql_connect و mysql_query رو توی یک فایل بنویس نه توی 2 تا فایل.
با تشکر
اگه خواستی نمونه کدها ت رو واسم میل کن.
muhammad.sherafat@yahoo.com

m.abri
یک شنبه 07 اسفند 1390, 20:11 عصر
به phpmyadmin چیکار داری؟ کد AJAX که نوشتی رو دیباگ کن که داره اشتباه کار میکنه. هر مرحله یه خروجی رو die کن. فایرباگ و کنسول‌ها این خروجی رو نمایش میدهند میتونی بفهمی مثلا تا فلان خط برنامه درسته و ....
عزیزم کدهایم کاملا درسته ...
برنامه فقط در درج و بازیابی اطلاعات فارسی مشکل داره... انگلیسی خوب کار می کنه

m.abri
یک شنبه 07 اسفند 1390, 20:11 عصر
سلام هموطن
همون طور که دوست گرامیمون گفت اوا مطمئن شو که فایل ajax درست کار میکنه. مخصوصا از اتصال به پایگاه داده در هنگام استفاده از دستور mysql_connect() مطمئن شو. در هر مرحله از کد اجکس هم خطا ها و متغیر ها رو echo کن و در فایل جاوا اسکریپتی که اون فایل رو فراخونی می کنه پس از دریافت response اجکس در تابع ارجاع داده شده در XmlHttpRequest حتما اونو با دستور alert(respponse ) نمایش بده تا خروجی پیغام خطا ها رو ببینی.
یکبار هم امتحان کن و دستور mysql_connect و mysql_query رو توی یک فایل بنویس نه توی 2 تا فایل.
با تشکر
اگه خواستی نمونه کدها ت رو واسم میل کن.
muhammad.sherafat@yahoo.com

عزیزم کدهایم کاملا درسته ...
برنامه فقط در درج و بازیابی اطلاعات فارسی مشکل داره... انگلیسی خوب کار می کنه

Reza1607
یک شنبه 07 اسفند 1390, 21:28 عصر
احيانا از تابع htmlentities يا htmlspecialchars استفاده نمي كنيد اگه استفاده مي كنيد بايد به اين صورت باشه


htmlentities ($value,ENT_QUOTES,'utf-8');

m.abri
دوشنبه 08 اسفند 1390, 16:57 عصر
دوست عزیز نه استفاده نمی کنم ولی جاسازی کردم جواب نداد ... شاید اشتباه جاسازی می کنم. ظاهرا شما اطلاعات خیلی خوبی دز زمینه Utf دارید.
در مورد وظایف این توابع ، محل استفاده و چگونگی استفاده از آنها لطفا یه کم توضیح بیشتر دهید.
در ضمن از همکاری شما خیلی متشکرم ... واقعا دستتون درد نکنه .... خیلی لطفا دارید

MMSHFE
دوشنبه 08 اسفند 1390, 19:02 عصر
باید دقت کنید که اگه از mysql_real_escape_string استفاده میکنید، باید قبلش به MySQL اعلام کنید که از کدگذاری یونیکد استفاده میکنید. برای اینکار، استفاده تنها از دستور زیر کافی نیست:

mysql_query('SET NAMES \'utf8\'');
بلکه باید قبل از استفاده از mysql_real_escape_string این دستورات رو بکار ببرین:


mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');

تا به MySQL اعلام کنید از کدگذاری یونیکد استفاده میکنید تا عمل Escapeکردن رو براساس این Charset انجام بده. دقت کنید که استفاده تنها از دستوری که اول گذاشتم، Charset مورد استفاده در mysql_real_escape_string رو تغییر نمیده.
اگر هم از این تابع استفاده نکردین، چک کنید که فقط توی IE مشکل دارین یا توی همه مرورگرها چون کلاً IE توی ارسال اطلاعات فارسی با Post مشکل داره. توی همین انجمن دنبال عباراتی مثل «مشکل IE با Postکردن اطلاعات فارسی» بگردین، قبلاً درباره اش بحث شده و به نتایج خوبی هم رسیدیم. موفق باشید.

MMSHFE
دوشنبه 08 اسفند 1390, 19:16 عصر
...ظاهرا شما اطلاعات خیلی خوبی دز زمینه Utf دارید...
کلاً هر کسی که با PHP و اطلاعات فارسی سروکار داشته باشه، ناچاراً اطلاعات خوبی درزمینه UTF کسب میکنه! :چشمک:
تابعی که دوستمون معرفی کردن، برای خنثی کردن کدهای بکاررفته در HTML بکار میره که با معرفی UTF-8 بعنوان سیستم کدگذاری، اعلام میکنید که کارکترهای فارسی رو با کدهای مخرب اشتباه نگیره و اونها رو Escape نکنه.
موفق باشید.

m.abri
دوشنبه 08 اسفند 1390, 22:37 عصر
کلاً هر کسی که با PHP و اطلاعات فارسی سروکار داشته باشه، ناچاراً اطلاعات خوبی درزمینه UTF کسب میکنه! :چشمک:
تابعی که دوستمون معرفی کردن، برای خنثی کردن کدهای بکاررفته در HTML بکار میره که با معرفی UTF-8 بعنوان سیستم کدگذاری، اعلام میکنید که کارکترهای فارسی رو با کدهای مخرب اشتباه نگیره و اونها رو Escape نکنه.
موفق باشید.

دوست عزیز خیلی لطف کردید که جواب دادید... ممنونم
مشکل من توسط نوشته های یه بنده خدایی در همین سایت برنامه نویس حل شد.
جهت کسب اطلاع می گم که:
من داده های فارسی را بوسیله کدهای آژاکس می فرستادم ولی این کدها باید قبل از ارسال کد می شدند بوسیله تابع زیر :
encodeURIComponent