PDA

View Full Version : چرا از MySQL مزخرفات برمی گرده؟



whiskey
یک شنبه 02 اردیبهشت 1386, 15:27 عصر
سلام،
من اصلاً برنامه نویس نیستم، اما یه آشنایی خیلی کمی با php و phpmyadmin دارم. می خوام یه وب سایت برای یه کاری راه اندازی کنم که از یک اسکریپت open source استفاده کردم. تقریباً همه ش رو فارسی کردم، فایل های tpl. رو ویرایش کردم، تصاویر، تاریخ و ...، کار تمومه فقط یه مشکل هست:
در همه جا نوشته هایی که از mySQL برمی گردن، فارسی هستن، اما یکی دو جا نه! این جورین: کرÙ?اÙ?شاÙ?
فقط دو جا این جوریه: نام تالارها با توضیحاتش و متن پیام های خصوصی.
ضمن این که من در تالارهای فارسی زیادی ائم از P30World و Majidonline و IranPHP و ... گشتم. اما موفق نشدم مشکلم رو حل کنم، فقط توی FAQ ایران پی اچ پی گفته بودن باید character set جدول های بانک داده رو utf-8 قرار بدی، اما ندونستم چه جوری؟ اصلاً توی phpMyAdmin جایی نیست که بشه character set یک جدول رو عوض کرد، collation چرا ولی character set نه! گفته بودن باید در mysql_query بنویسی

mysql_query ("charset name 'utf-8'")
اما من mysql_query اسکریپت رو نیافتم. البته اینم بگم که charset فایل های tpl. همه utf-8 هستا! اینو دیگه بلدیم، چون وقتی unicode صفحه روی utf-8 هست، همه نوشته ها، حتی همه ی اونایی که از بانک داده میان درستن، الا اون یکی دو تا.
همه ی نوشته ها توی phpmyadmin همون جوری اجق وجقن! با این که به جز یکی دو تا همه در صفحات درست نشون داده می شن، اما من می خوام توی خود mySQL هم همه ی نوشته ها فارسی باشن، چون باید روشو کم کنم، این جوری دیگه بعید می دونم بتونه یه کاراکترم اراجیف پس بده! تو رو خدا کمکم کنید، دیگه اعصابم داغون شده.
من فایل class.mysql.inc اسکریپت رو هم که در شاخه ی inc هست براتون پیوست می کنم.

oxygenws
پنج شنبه 06 اردیبهشت 1386, 10:39 صبح
به خیلی چیزا بستگی داره... اینا رو توضیح بده...
1- چطوری داده ها رو ریختی تو پایگاه داده؟؟
2- دقیقا collation رو بگو... (400 تا utf8 داره!! دقیق ِ دقیق بگو)

whiskey
جمعه 07 اردیبهشت 1386, 12:35 عصر
ابتدا تشکر می کنم بابت توجه شما به مشکلم؛
اما این که چه طوری داده ها رو ریختم توی پایگاه: از طریق یک فرم توی یک صفحه ی php
و collation هم اینه: utf8_persian_ci
ببینید اسکریپت من یه فایل core_body.tpl داره که من اونجا کدینگ html رو utf-8 قرار دادم، ولی در بقیه ی صفحات کد html ی که کدینگ رو مشخص می کنه، قرار ندادم. آیا می تونه دلیل این مشکل این باشه؟ و باید در تک تک صفحات کد html تعریف coding رو قرار بدم؟

oxygenws
جمعه 07 اردیبهشت 1386, 12:48 عصر
بهتره همه جا کدینگ رو utf-8 بکنی...
در مورد ریختن اطلاعات... اطلاعات رو از همون اول توی همین جدول (با همین collation) ریختی؟!!

moohssenn
جمعه 07 اردیبهشت 1386, 14:03 عصر
با اجازه آقا امید
این دوتا کوری را امتحان کن . بعد از اتصال اول اینارو اجرا کن بعد بقیه کوریهات


SET CHARACTER SET 'utf-8'
SET NAMES utf8_persian_ci

whiskey
شنبه 08 اردیبهشت 1386, 21:53 عصر
دوستان از بذل و توجه شما سپاسگزارم.
آقا امید! بله اطلاعات رو از اول با همون collation وارد کردم.
یعنی واقعاً این که صفحه با کدینگ utf-8 در کاوشگر بارگذاری بشه کافی نیست و باید در همه ی صفحه های برچسب انکدینگ اچتمل رو بنویسم؟؟؟
در مورد دوست دیگرمون هم که راهنمایی کردند، چیزایی رو که فرمودید من انجام دادم (قبلاً) اما مشکل استمرار داره.
اگر لازم که من توضیحات بیشتری از مشکلم بدم دستور بدید.
بعدش یه چیز دیگه واقعاً تو خود مای اسکیول هم می شه کاراکترای فارسی دید؟

oxygenws
شنبه 08 اردیبهشت 1386, 23:42 عصر
من تا حالا این مشکلو نداشتم...
لطف می کنید نسخهء MySQL خودتون رو دقیق ذکر کنید؟؟


یعنی واقعاً این که صفحه با کدینگ utf-8 در کاوشگر بارگذاری بشه کافی نیست و باید در همه ی صفحه های برچسب انکدینگ اچتمل رو بنویسم؟؟؟
هر صفحه html مجزا بررسی میشه.... تمام صفحات باشد داشته باشند.


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

whiskey
یک شنبه 09 اردیبهشت 1386, 11:52 صبح
لطف می کنید نسخهء MySQL خودتون رو دقیق ذکر کنید؟؟
من از wamp آخرین نسخه استفاده می کنم. (1.7.0)

هر صفحه html مجزا بررسی میشه.... تمام صفحات باشد داشته باشند.
ببینید شما که استادید، در واقع حرفی که دارم می زنم زیره به کرمان بردنه، ولی قالب بندی اسکریپت هایی که از فایل های tpl. استفاده می کنند، به این شکله که یک فایل هیدر، یکی فوتر و بقیه ی فایل ها محتوا و بلوک ها رو تشکیل می دن، وقتی توی هیدر هست چه دلیل داره بقیه ی فایل هام یه کد اضافی بخورن؟

تفهمیدم چی میگی... مفهوم نیست.
می گم، وقتی توی phpMyAdmin هستم، مشاهده ی جدول ها رو می زنم، می شه محتوای هر ستونی که فارسی پر شده، یعنی از توی فایل php اطلاعات فارسی بهش ارسال شده، همونجام فارسی ببینمشون یا نه؟ باید بشه دید یا نه؟

oxygenws
یک شنبه 09 اردیبهشت 1386, 12:45 عصر
ببینید شما که استادید، در واقع حرفی که دارم می زنم زیره به کرمان بردنه، ولی قالب بندی اسکریپت هایی که از فایل های tpl. استفاده می کنند، به این شکله که یک فایل هیدر، یکی فوتر و بقیه ی فایل ها محتوا و بلوک ها رو تشکیل می دن، وقتی توی هیدر هست چه دلیل داره بقیه ی فایل هام یه کد اضافی بخورن؟
من گفتم هر صفحه HTML نگفتم هر فایل tpl :)


می گم، وقتی توی phpMyAdmin هستم، مشاهده ی جدول ها رو می زنم، می شه محتوای هر ستونی که فارسی پر شده، یعنی از توی فایل php اطلاعات فارسی بهش ارسال شده، همونجام فارسی ببینمشون یا نه؟ باید بشه دید یا نه؟
کل مشکل شما با phpMyAdmin است فقط یا با برنامه ای که خودت نوشتی؟؟
phpMyAdmin زیاد درست بلد نیست با زبون های یونیکد کار کنه!!

reza_rad
یک شنبه 09 اردیبهشت 1386, 13:20 عصر
phpMyAdmin زیاد درست بلد نیست با زبون های یونیکد کار کنه!!

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

whiskey
دوشنبه 10 اردیبهشت 1386, 07:50 صبح
بسیار عالی؛
حالا بر می گردم به مشکل اصلی من: تمام آنچه که از دیتابیس برگردانده می شه، فارسی هستش، هیچ مشکلی نیست، اما فقط محتوای دو ستون این مشکل رو داره، یکی نام تالارها با توضیحاتشون، دوم متن پیام های خصوصی، این مشکل وقتی جالب تر می شه که در یک صفحه با خصوصیات کدینگی مشخص (یوتیف-8) یک کلمه مشکل داره ولی دیگری نه! مثلاً هدایت گر تالارها رو در نظر بگیرید (مثل همین چیزی که بالا سمت راست این تالار هستش) دسته ی تالارها فارسی برمیگرده ولی نام تالارها نه! در حالی که من جفتش رو خودم به بانک داده دادم. یا دیگر این که در پیام خصوصی، عنوان پیام فارسی هستش ولی خود پیام چپ اندر قیچیه. می دونم مشکل ساده س و شما لطف می کنید و کمکم می کنید. بازم ممنونم.