نمایش نتایج 1 تا 9 از 9

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

  1. #1

    مرتب کردن به ترتیب حروف الفبای فارسی

    قبلاً هم مشابه این سوال در همین تالار پرسیده شده، اما جواب اون کمکی به رفع مشکل من نکرد.

    من دیتابیس و تمام جدول‌ها رو با collation مناسب (همون utf8_persian_ci خودمون) ساختم، و حتی در تمام queryهایی که به کار می‌برم (از توی صفحهٔ وب) دستور collate رو هم به کار می‌برم.

    مثال:
    select id, title from majors order by title COLLATE utf8_persian_ci


    با این وجود، جدول مطابق الفبای فارسی مرتب نمیشه! دال قبل از ب می‌آد، بعد مثلاً ت و بعد میم و بعد از اون تازه کاف و بعد پ قرار می‌گیرن! (توجه کنید که من از کاراکتر درست ک و ی استفاده می‌کنم، نه از کاراکتر اشتباه ک و ی که مال عربی هست).

    مشکل کار من چیه؟ راه حل شما براش چیه؟

  2. #2
    کاربر دائمی آواتار I,Nobody
    تاریخ عضویت
    خرداد 1385
    محل زندگی
    کانادا
    پست
    464
    این راه حلی که شما استفاده میکنی، راه حلیه که یکی از دوستان توی همین انجمن، خیلی حق به جانب، ارائه کرده که به نظر من هیجوقت درست کار نمیکنه.
    شما collation جدولت رو همون utf8_persian_ci بذار و کوئری رو اینجوری بگیر ببین مشکلت حل میشه :

    select id, title from majors order by BINARY(title) ASC

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    ايران-قم
    پست
    227

    مشکل شاید از mysql باشه

    سلام
    این مشکلی هست که Mysql نشخه های یکم قدیمیتر مثل mysql4.1 شاید داشته باشه.
    نسخه های جدید تر این محصول مثل mysql5‌به بعد شاید این مشکلاتو نداشته باشه،شما mysql5 رو استفاده کن شاید کمکتون کنه.

  4. #4

  5. #5
    از پاسخ شما دوستان ممنون هستم. در جواب مورد اول، باید بگم که استفاده از BINARY رو نمی‌تونم بپذیرم، چون انتظار دارم که یا واقعاً مای سیکوئل در بارهٔ زبان فارسی ساپورت کامل داشته باشه (که در اون صورت قاعدتاً باید با همون collate و این‌ها حل شه) یا ساپورتش درست نباشه (که مجبور باشیم از طریق binary دورش بزنیم) که در این حالت باید مشکل رو خودشون رفع کنن.

    در جواب مورد دوم، باید عرض کنم که البته این سایتی که باهاش کار می‌کنم هاست شده هست و من قادر به ارتقای نرم‌افزار نیستم، اما مطابق چیزی که در CPanel گزارش می‌شه، اون هاست داره از مای سیکوئل نسخهٔ 5.0.27 استفاده می‌کنه.

    در مورد آخر باید عرض کنم که لینک مای سیکوئل که اصلا کمک نکرد، چون دقیقاً همون collation رو اشاره کرده که مشکل داره. اما لینک دوم در مورد نسخهٔ ۴ از مای سیکوئل بود، نه نسخهٔ ۵.

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

  6. #6
    کاربر دائمی آواتار I,Nobody
    تاریخ عضویت
    خرداد 1385
    محل زندگی
    کانادا
    پست
    464
    خوب من خواستم یه راه حلی بهت ارائه بدم که کارت راه بیفته.
    حالا شما اگه خواستی استفاده کن، نخواستی هم می تونی منتظر رفع اساسی این مشکل بمونی و بعدش برنامه تونو بنویسی.
    ضمناً شما اگه یکی از توابع مثلاً PHP با فارسی مشکل داشته باشه و شما بهش نیاز داشته باشی، یه تابع می نویسی یا منتظر رفع ایراد تابع اصلی توی نسخه های جدیدتر می مونی؟!

  7. #7
    خوب، من الان مشکل حادی ندارم، و اگر داشته باشم راه حل شما رو استفاده خواهم کرد. بحث من اینه که مشکل رو دقیقاً بشناسم، مطمئن شم که واقعاً راه حلی نداره، بعد هم دنبال رفعش برم.

    اما درمورد راه حلی که شما فرمودید، باید بگم که کامل نیست. با کمک BINARY کماکان ترتیب الفبا درست رعایت نمی‌شه و مثلاً ک و پ بعد از بقیهٔ حروف می‌آن.

    اما جناب vahidAM شما یک لینک دومی دادید، که اگر چه مال ورژن ۵ نیست، اما برام جالبه. توش انگار داره یک collation جدید تعریف می‌کنه. می‌شه لطفاً طرز استفاده از اون رو به من یاد بدید؟

  8. #8
    . آواتار oxygenws
    تاریخ عضویت
    دی 1382
    محل زندگی
    تهران/مشهد
    پست
    6,333
    به کل قضیه و این سوال آخر شما وابسته است، اما مطلقا به سوال شما وابسته نیست.

    http://www.gaugeus.com/ramblings/200...stom-collation
    http://bugs.mysql.com/file.php?id=6814

    http://www.unicode.org/charts/
    ایمیل من
    سایت من

    عضویت در جامعه‌ی اهدای عضو

    Direct PGP key: http://tinyurl.com/66q5cy
    PGP key server: keyserver.ubuntu.com
    PGP name to search: omidmottaghi

  9. #9

    نقل قول: مرتب کردن به ترتیب حروف الفبای فارسی

    سلام بر همگی،
    من هم همین مشکل رو دارم. mysql ver : 5.0.51 هست و collation فیلد های جدول(g_name) هم utf8_unicode_ci هست.

    order by BINARY `g_name` COLLATE utf8_persian_ci
    `ORDER BY BINARY `g_name
    این دو تا کد رو امتحان کردم که مرتب سازی رو درست انجام میده ولی با حروف "گ چ پ ژ" مشکل داره :(
    می خواستم بدونم دوستان برای حل این مشکل چیکار می کنن؟راه حلش چیه؟
    ممنون از همگی :)
    آخرین ویرایش به وسیله saeidejafari : دوشنبه 19 اسفند 1387 در 08:59 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •