PDA

View Full Version : مشکل با کاراکتر های فارسی ذخیره شده در دیتبایس (متفاوت با مشکل رایج ؟؟؟؟ )



plague
چهارشنبه 06 آذر 1392, 11:47 صبح
سلام

یه سایت قدیمی هست که میخام از اول بنویسمش با انکدینگ و دیتبایسش به مشکل برخوردیم
کاراکتر های تیبل ها و دیتبایس رو utf8 persian گزاشتن پس از اون جهت مشکلی نیست
توی اسکریپت جدیدی هم تنظیمات رو روی انکدینگ فارسی تنظیم کردم همونجوری که بارها قبلا انجام دادم

این اسکریپت قدیمی از یه انجین دیتبایس به اسم tuba engin یا همچین چیزی استفاده میکنه که اثری ازش تو اینترنت پیدا نکردم من ... مهم نیست زیاد چیزی خاصی نیست

قسمت عجیب اینجاست :

وقتی یه داده ای رو به فارسی ثبت میکنیم توی اسکریپت قدیم
توی دیتابیس اون رو به شکل عجیبی زخیره میکنه : عمران
ولی توی خوده اسکریپت قدیمی وقتی نمایشش میدیم درست و با فونت فارسی نمیایش میده !

من نمیدونم اون اسکریپت قدیمی چیکار میکنه که درست نشون میده این خرچنگ غورباقه رو که درست نشون میدتش ولی تو اسکریپت جدیدی من همون فونت عجیب نمایش داده میشه

یچیزی این وسط تبدیل میکنه این رو

مورد عجیب دیگه اینکه وقتی توی دیتبایس به شکل مستقیم وارد میکنیم حروف فارسی رو
توی دیتبایس درست زخیره میشه , آسکریپت جدیدی درست نشون میده
ولی اسکریپت قدیمی من این رو به صورت ؟؟؟؟؟؟ نمایش میده !


فکر نمیکنم به اون انجینی که استفاده میکنه ربطی داشته باشه چون چیز خاصی نداره ولی از اینجا میتونید انجین رو ببینید
https://github.com/maxxxir/mz-codeigniter-crud/blob/master/tuba.php

روش استفاده ازش هم به این صورته




define("database_type" , "MYSQL"); define("database_ip" , "localhost"); define("database_un" , "root"); define("database_pw" , ""); define("database_name" , "nezam2"); define("database_connectionstring" , ""); $db = new TUBADBENGINE(database_type , database_ip , database_un , database_pw , database_name , database_connectionstring); $db->Select("SELECT * FROM tnews limit 3"); if ($db->Lasterror() != "") { echo "<B><Font color=red>ÎØÇ ! áØÝÇ ãÌÏøÏÇ ÊáÇÔ ˜äíÏ"; exit(); } for ($i = 0 ; $i < $db->Count() ; $i++) { $row = $db->Next(); var_dump($row); }

plague
چهارشنبه 06 آذر 1392, 12:37 عصر
مشکل رو پیدا کردم
php کارکتر های فارسی رو utf8 در نظر میگیره
وقتی ارسال میشن به دیتبایس اونها تبدیل به latin1 میشن و با این انکدینگ زخیره میشن که نتیجش اون فونت عحیب میشه ( احتمالا یه مشکلی داره اون پروسه ارسال دیتا )
وقتی نتایج از دیتابیس خونده میشن اونها با انکدیگن لاتین خونده میشن و php تبدیلشون میکنه به utf8

زیاد شاید معنی نده ! ولی اینجوریه
با تبدیل char_set کانکشن به latin1 حل شد مشکل

MMSHFE
چهارشنبه 06 آذر 1392, 13:13 عصر
http://barnamenevis.org/showthread.php?356992
و
http://barnamenevis.org/showthread.php?215150-snippet-%D9%87%D8%A7%DB%8C-php&p=1690765&viewfull=1#post1690765