utf8_general_ci utf8_persian_ci utf8_unicode_ci

 

یک character set مجموعه ای از نشانه ها (symbols) و اینکودینگ ها می باشد.
یک collation مجموعه ای از وظایف برای مقایسه کاراکتر ها در character set می باشد.

 

در حین ایجاد یک ستون برای جداول خود در پایگاه داده می توانید Collation آن را نیز تغییر دهید. در صورتی که می خواهید از نوشته های یونیکد مانند فارسی استفاده کنید ضروری است که از یونیکدهای زیر مجموعه utf8 استفاده کنید.

در زیر مجموعه های UFT8 سه گزینه وجود دارد که شما با انتخاب هر کدام از این سه گزینه، میتوانید کاراکترهای زبان فارسی را به خوبی در پایگاه داده ذخیره کنید . اما آیا تا به حال با خود فکر کرده اید که چه تفاوتی بین این سه گزینه وجود دارد ؟

گزینه های موجود عبارتند از utf8_unicode_ci ، utf8_general_ci و utf8_persian_ci .

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

 

– اگر قصد دارید فقط متن های فارسی خود را در فیلد خود ذخیره کنید از utf8_persian_ci استفاده کنید زیرا با بیشترین سرعت ممکن و بهترین دقت متن‌ های فارسی را به درستی مرتب می‌کند.

– اگر قصد دارید هم متن فارسی هم انگلیسی استفاده کنید (و یا از چند زبان همزمان) انتخاب یکی از گزینه‌های utf8_general_ci و utf8_unicode_ci شما را به هدف می‌رساند.

utf8_general_ci تفاوت اندکی با utf8_unicode_ci دارد و آن این است که بخشی از الگوریتم‌های یونیکد در آن پیاده نشده است و ممکن است در هنگام مرتب‌سازی برخی زبان‌ها اشتباهاتی در آن مشاهده شود. در عوض کارایی آن بهتر است .

 

 * * *

سوال : من وقتی collation schema پایگاه داده MySQL خودم رو utf8_general_ci می گذارم هیچ مشکلی با حروف و کلمات فارسی ندارم ولی دیدم که یک collation دیگر با نام utf8_persian_ci نیز وجود دارد. می خواستم بدونم چه مزیتی نسبت به utf8_general_ci دارد؟

جواب : تفاوت این دو گزینه در مرتب سازی بر اساس حروف الفبا (Sort) می باشد.

هنگامی که که از utf8_persian_ci استفاده کنید حروف صرفا فارسی (پ چ ژ گ) در جای خود سورت می شوند یعنی پ بعد از ب می آید، چ بعد از ح می آید و ..

اما در utf8_general_ci حروف “پ چ ژ گ” در انتها و بعد از ی می آیند.



اشتراک در شبکه هاي اجتماعي :

مطالب مرتبط با اين نوشته Related to this post