PDA

View Full Version : مشکل درج فارسی در اکسس



alpha_93
شنبه 05 اردیبهشت 1394, 08:22 صبح
با سلام خدمت دوستان
زمانیکه متن فارسی رو توسط کد php داخل پایگاه داده اکسس درج می کنم حروف به صورت تست نمایش داده می ‌شود

<!DOCTYPE HTML><html lang="FA" dir="rtl"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Language" content="fa"></head><?php $user = ""; $password = ""; $mdbFilename= $_SERVER["DOCUMENT_ROOT"] . "animals.mdb"; $conn=odbc_connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$mdbFilename", $user, $password); $q="insert into animals(one,two) values('تست','تست')"; odbc_exec($conn, $q); odbc_close($conn);?></html>

Todco.ir
شنبه 05 اردیبهشت 1394, 09:03 صبح
می تونید برای رفع این مشکل از تابع iconv استفاده کنید.
شکل ساختاری این تابع:
string iconv ( string $in_charset , string $out_charset , string $str )

alpha_93
شنبه 05 اردیبهشت 1394, 11:13 صبح
دوست از ابن تابع استفاده کردم ولی متاسفانه مشکل رو حل نمی کنه

Unique
شنبه 05 اردیبهشت 1394, 12:44 عصر
شما باید ببینی access داره از چه encoding ی استفاده میکنه و بعدش بسته به نوع ذخیره اطلاعات و بازیابی از iconv استفاده کنی. Encoding ستون اطلاعات و جدول خیلی مهمه. احتمالا windows-1256 هست اینطوری :


iconv("Windows-1256", "UTF-8", $col)

اما ممکنه موارد دیگه ای باشه که باید چک کنی !
یک مورد دیگه هم اینه که Connection String را اینطوری بنویسی :

"Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$mdbFilename;Client_CSet=UTF-8;Server_CSet=Windows-1256"

البته با فرض اینکه Encoding سمت سرور (منظور همون Access هست) Windows-1256 که همون عربی هست باشه. میتونی هر دو را هم utf-8 بدی و چک کنی.
اصل موضوع اینه که شما باید بدونی Access داره از چه Encoding ی برای ذخیره استفاده میکنه.