مشكل حروف فارسي در تبديل ديتابيس، كمك كنيد!

emoradi2001

New Member
سلام بچه ها:rose:
با اعصاب خورد اين تاپيك رو مي زنم! آخه يه مشكلي پيدا كردم كه چند روزه كلافه ام كرده.

قبلا يه سايت asp خبري داشتم كه چند روزه تصميم گرفتم تبديلش كنم به php و با اسكريپت خبري معروف vivo هم ميخوام اينكارو بكنم.
براي اينكه اطلاعات ديتابيس قبليم برام مهمه (حدودا 2000تامطلب و خبر توش هست) اومدم از access تبديلش كردم به mysql و فيلدهاش رو هم مطابق فيلدهاي vivvo جور كردم. ايناش مشكلي نيست مشكل من در فارسي نمايش دادن مطالبه.

تو ديتابيس قبليم مطالب به اين صورت سلا٠سلا٠ذخيره شده نه با حروف فارسي. البته اونوقت در نمايش فارسي مشكلي نداشتم و با utf-8 همه صفحات فارسي نشون داده مي شد ولي الآن كه همينا رو آوردم تو vivvo ديگه فارسي نشونشون نمي ده همينطوري سلا٠نشون ميده.

collation كل ديتابيس هم utf_general_ci هست طبق تعريف خود vivvo هم
define ('VIVVO_DB_COLLATION', utf-8);
صفحات با utf-8 بالا ميان ولي نوشته هاي همه خرچنگ قورباغه هست.

دوستان لطفا كمك كنيد.

-راهي هست مثلا نرم افزاري، كدي كه بتونه ديتابيس قبليم رو كلا به فارسي تبديل كنه و از حروف سلا٠خرچنگ قورباغه دربياره؟! يا ميشه همين حروف سلا٠رو به صورت فارسي نشون بدم بدون تغييرشون؟ مثلا كدي به اسكريپت vivvo اضافه كنم كه خودبخود فارسي نشون بده(تو اسكريپت asp قبليم خودش همين خرچنگ قورباغه ها رو فارسي نشون مي داد)

پيشاپيش تشكر مي كنم از كسايي كه جواب بدن. واقعا چند روزه از درس و زندگي افتادم. :cry:كمممممممممممممممك!!! :wink:
 
آخرین ویرایش:

greencat

Member
سلام دوست عزیز
وقتی کل جدول هاتو و کل فیلدهاشو که متنی هستن به collation اش رو به utf_general_ci تبدیل کردی توی اسکریپت Php ات موقع ای که به دیتابیس وصل شدی یعنی بعد از این قسمت از کدت:
کد:
$dblink = mysql_connect($host,$db_user,$db_pass) ;
		mysql_select_db($db_name,$dblink) ;

اولین کوئری که مینویسی رو این کوئری قرار بده :
کد:
mysql_query("set names 'utf8'");

یعنی در کل این طوری بشه قسمتی از کدت که به دیتابیس وصل میشی:
کد:
$dblink = mysql_connect($host,$db_user,$db_pass) ;
		mysql_select_db($db_name,$dblink) ;
		mysql_query("set names 'utf8'");

یادت باشه که باید این کدها قبل از همه کوئری هات باشن تا توی دیتابیس هم همه چیز فارسی نوشته شده باشه و خوانا باشه.
 

P.H.P

Member
سلام

2000 تا زیاد نیست راحت میشه تبدیل کرد

راه سادش اینه که با ++notepad اینکدشو تغییر بدی

موفق
 

emoradi2001

New Member
سلام دوست عزیز
وقتی کل جدول هاتو و کل فیلدهاشو که متنی هستن به collation اش رو به utf_general_ci تبدیل کردی توی اسکریپت Php ات موقع ای که به دیتابیس وصل شدی یعنی بعد از این قسمت از کدت:
کد:
$dblink = mysql_connect($host,$db_user,$db_pass) ;
        mysql_select_db($db_name,$dblink) ;

اولین کوئری که مینویسی رو این کوئری قرار بده :
کد:
mysql_query("set names 'utf8'");

یعنی در کل این طوری بشه قسمتی از کدت که به دیتابیس وصل میشی:
کد:
$dblink = mysql_connect($host,$db_user,$db_pass) ;
        mysql_select_db($db_name,$dblink) ;
        mysql_query("set names 'utf8'");

یادت باشه که باید این کدها قبل از همه کوئری هات باشن تا توی دیتابیس هم همه چیز فارسی نوشته شده باشه و خوانا باشه.
ممنون دوست عزيز خيلي لطف كردي
ولي من همه فايلاي php رو دنبال mysql_connect گشتم 3-4 تا از اونا اين دو خط رو داشت و من خط سوم كه شما گفتيد رو بهشون اضافه كردم ولي افاقه نكرد
 

emoradi2001

New Member
سلام

2000 تا زیاد نیست راحت میشه تبدیل کرد

راه سادش اینه که با ++notepad اینکدشو تغییر بدی

موفق
ديتابيسمو به صورت پسوند sql دارم. با ++notepad بازش كردم. اولا كه اينكودش utf-8 بود بعد از منوي بالاي صفحه به هرچي تغييرش دادم بازم هيچ فرقي نكرد و همچنان خرچنگ قورباغه اس. اگه راهي سراغ داريد كه مستقيم بتونم تبديل به فارسي كنم دريغ نكنيد. ممنون ميشم:oops:

راستي اينم بگم تو اسكريپت قبليم (asp) با اين دو خط زير نوشته ها به صورت فارسي نشون داده مي شد:
کد:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
و اگه خط دوم نبود فارسي نشون داده نمي شد!
 
آخرین ویرایش:

P.H.P

Member
اینکد فایل utf8 باشه باید کپی کنه توی اینکد ANSI بعد از اونجا فرمت رو تغییر بدی

میتونی توی یه صفحه ساده html هم بزاری بعد از مرورگر اینکد رو تغییر بدی و کپی کنی :دی
 

eAmin

Well-Known Member
سلام
شما به این آدرس برید، دقیقا برای حل چنین مشکلی ایجاد شده! اگر کد JavaScript به کارتون آمد که هیچ در غیر اینصورت یک آدرس در همون تاپیک معرفی کردم که با php توسط دوست بنده نوشته شده.

موفق باشید.
 

ziXet

مدیر انجمن PHP/MYSQL
به نظر من دیتابیس درست کانورت نشده!
با چی کانورت کردی؟
 

emoradi2001

New Member
به نظر من دیتابیس درست کانورت نشده!
با چی کانورت کردی؟
با ESF Database Migration Toolkit Pro 6.2.21 كانورت كردم. نه عزيز مشكل كانورت نيست چون اطلاعات تو خود ديتابيس اكسسم همونطوري خرچنگ قورباغه ذخيره شده بود. همون طوري هم كانورت شده!
 

emoradi2001

New Member
اینکد فایل utf8 باشه باید کپی کنه توی اینکد ANSI بعد از اونجا فرمت رو تغییر بدی

میتونی توی یه صفحه ساده html هم بزاری بعد از مرورگر اینکد رو تغییر بدی و کپی کنی :دی
آقا مشكل حل شد! چقدر خوبه آدم بعد يه اعصاب خوردي مشكلش برطرف بشه! آخييييش!:cool:
با نت پد عوض نكردم ولي حرفت باعث شد به اين راه (كپي كردن و تغيير اينكود) فكر كنم. قبلا گفته بودم تو اسكريپت قبلي با اين دو خط مشكل نمايش فارسي حل مي شد:
کد:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
فرنت پيج رو باز كردم يه صفحهhtml درست كردم و بالاش دو خط بالا رو گذاشتم. بعد ديتابيسمو (كه به فايلي با پسوندsql مبدل شده بود) كپي كردم تو صفحه html. حالا با زدن preview تو فرنت پيج خودبخود خرچنگ ها به آدميزاد تبديل شده بود! منم كپي كردم ازش و يه فايل ديتابيس جديد ساختم.

از بقيه بچه ها هم تشكر مي كنم. مطمئنا راه حل هاي اونا هم تو اين جور موارد مي تونه مفيد باشه. ولي من از راه دم دستي ترش استفاده كردم.
 

emoradi

New Member
سلام
شما به این آدرس برید، دقیقا برای حل چنین مشکلی ایجاد شده! اگر کد JavaScript به کارتون آمد که هیچ در غیر اینصورت یک آدرس در همون تاپیک معرفی کردم که با php توسط دوست بنده نوشته شده.

موفق باشید.

مشکل قبلی حل شد ولی چند تا دیتابیس دیگه دارم که متوجه شدم اونا متون فارسیش به صورت western-iso ذخیره شده. این یکیو دیگه با روش اختراعی خودم هم نتونستم درست کنم. به نظرم اون تابعی که معرفی کردید دقیقا چاره کار من باشه ولی مشکل اینجاس که من سوادی تو برنامه نویسی ندارم. چطور باید از این تابع استفاده کنم؟ ممنون میشم بهم بگید
 

emoradi

New Member
بازم که کسي کمک نکرد ولي خودم پيدا کردم راهشو. البته از تابع استفاده نکردم از همون روش دستي خودم درستش کردم. بازم اينجا مي نويسم تا اگه کسي مشکل منو داشت راحت باشه و چند روزي که من وقتم تلف يه چيز به اين سادگي شد، اون حداقل وقتش تلف نشه.
اول ديتابيس رو که فرمت sql داره با Notepad ++ باز کردم بعد از منوي بالا Encode in Utf-8 رو انتخاب کردم. اينطوري مدل خرچنگ قورباغه ها عوض شد ولي هنوز فارسي نيست. حالا همه اونچه داخل فايل بود رو انتخاب و کپي کردم و نرم افزار Frontpage رو باز کردم. در بخش Code رفتم و تو قسمت بالا يعني <Head> اين دو خط رو نوشتم:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

حالا در بخش Design نرم افزار فرنت پیچ، اون چیزایی که از داخل دیتابیس کپی کرده بودم رو اینجا Paste کردم. بعد از زدن Preview خودبخود همه متون به فارسی تبدیل شدند. حالا تو Notpade ++ یه صفحه جدید باز کردم Encoding رو به utf-8 تغییر دادم. این بار اون چه رو که از فرنت پیچ بدست اومده بود اینجا کپی کردم و با پسوند sql ذخیره کردم. تمام!
 

sabzhost

New Member
سلام دوستان
یه راه حل ساده تر هم هست
فایل دیتابیس رو با notepad معمولی ویندوز باز کنین و اونو save as کنین ..
قبل از ذخیره کردن encoding رو ANSI انتخاب کنین و با فرمت txt ذخیره کنین
اونوقت txt رو پاک کنین و sql بزارید
به همین راحتی !!!!
البته خودم چند روز گرافتارش بودم
مخصوصا توی whmcs
 

جدیدترین ارسال ها

بالا