کمک فوری/ تغییر چارست دیتابیس

masoomi

کاربر عضو
من یه جدول توی دیتابیسم ساختم اینجوری:

CREATE TABLE IF NOT EXISTS `moshtarian` (

`moshtariID` float NOT NULL AUTO_INCREMENT,

`esm` varchar(30) NOT NULL DEFAULT '',

`famil` varchar(30) NOT NULL DEFAULT '',

PRIMARY KEY (`moshtariID`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=18 ;
از طریق اسکریپتم، داده ها رو تزریق کردم توی دیتابیس و چون داده ها فارسی بودن، حالا توی دیتابیس این داده ها به این صورت در اومدن. (اکسپورت کردم جدولو :)

INSERT INTO `moshtarian` (`moshtariID`, `esm`, `famil`) VALUES (17, 'Ø*ÛªÛد', 'ت۪Øمسª§±');
موقعی که میخوام این داده ها رو توو یه بخش از اسکریپتم (مثلا صفحه پروفایل مشتریام) فراخوانی کنم، به همون صورتی که توی دیتابیس ذخیره شده، فراخونی و نمایش داده میشه.

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

اما یه بخش هست که تعریف کردم اگه طرف فامیلیش مثلا "معصومی" باشه، فلان ریال از تراکنشش کارمزد کم کنه.

بدبختیم اینه که وقتی میخواد معصومی رو از جدول moshtarian بگیره، یه مشت چرت و پرت میگیره و چون کلمه "معصومی" عملا توی دیتابیس ثبت نشده و بجاش حروف چرت و پرت ثبت شده، اون خط کدم ارور میده.

این همه توضیح دادم که این سوالو بپرسم:

چیکار کنم که داده هایی که مشتریام وارد میکنن، عینا (با استفاده از یونیکد یا utf-8) توی دیتابیسم ذخیره بشه.

یعنی اگه طرف توی فیلد نام خانوادگی بنویسه: معصومی، توی جدول moshtarian، توی famil، معصومی ذخیره بشه. نه ت۪ØÙ

لطفا توضیح کامل بدین.

من کلی اینترنتو جستجو کردم و هرکی یه روشی گفته بود. همه رو تست کردم، اما نشد.

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

از اساتید یکی به دادم برسه این وقت شب که بدجور گیرم :((

 

EM4D

تازه وارد
سلام

در حالت کلی روش شما استاندارد نیست .

نباید از نام فارسی برای query استفاده کنید . با استفاده از relationship های صحیح در دیتابیستتون باید کارتون رو انجام بدید

در این موردی که شما میخواین حتی المقدور باید از id هر مشتری برای پرس و جو در دیتابیس کمک بگیرید یا حداقل از نام لاتین یا یک slug مشخص و منحصر به فرد همون یوزر

در هدر صفحاتتون باید این کد باشه :


کد:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
جداول دیتابیستون باید روی utf8_general_ci باشن

بعد از اتصال به دیتابیس این کوئری باید اجرا بشه :


کد:
mysql_query("SET NAMES UTF8");
موفق باشید

 

masoomi

کاربر عضو
دقیقا همین کار رو هم کردم. اما نتیجه نداد.

گفتین: "

باید از id هر مشتری برای پرس و جو در دیتابیس کمک بگیرید یا حداقل از نام لاتین یا یک slug مشخص و منحصر به فرد همون یوزر".

من تعریف کردم که: (فارسیشو میگم)

انتخاب کن moshtariID رو از moshtarian، جایی که famil=معصومی


 

masoomi

کاربر عضو
یافتم.

باید توی فایلی که دستور اتصال به دیتابیس از طریق یوزر پسورد رو داده بودم، بعد از mysql_select_db($dbname,$connect);، اینو مینوشتم:

mysql_query("SET CHARACTER SET utf8", $connect);mysql_query("SET NAMES 'utf8'", $connect);
 

EM4D

تازه وارد
یافتم.باید توی فایلی که دستور اتصال به دیتابیس از طریق یوزر پسورد رو داده بودم، بعد از mysql_select_db($dbname,$connect);، اینو مینوشتم:
گفتید که انجام دادم ؟

جداول دیتابیستون باید روی utf8_general_ci باشن

بعد از اتصال به دیتابیس این کوئری باید اجرا بشه :


کد:
mysql_query("SET NAMES UTF8");
:53:

 
بالا