هل أنا حقا بحاجة إلى التحول من VARCHAR إلى VARBINARY ل UTF-8 في Mysql & PHP?

StackOverflow https://stackoverflow.com/questions/1030234

سؤال

هل أنا حقا بحاجة إلى التحول من VARCHAR إلى VARBINARY والنص إلى النقطة ل UTF-8 في Mysql & PHP?أو يمكن أنا العصا مع شار/حقول النص في الخلية ؟

هل كانت مفيدة؟

المحلول

ربما.كما جيسون وأشار وأنا لم تلاحظ, MySQL UTF-8 فقط الخريطة الأساسية متعدد اللغات الطائرة.دليل لا تشير إلى أنهم "[utf8 و ucs2] تكفي تقريبا جميع الشخصيات في اللغات الرئيسية" لذا ، فمن المحتمل آمنة ولكن قد ترغب في التحقق من ما هو في الطائرة أساسية متعددة اللغات فقط للتأكد.

أصلي الإجابة

طالما أن قاعدة البيانات الخاصة بك باستخدام UTF-8 يجب أن تكون قادرة على العصا مع VARCHAR و نص.(كملاحظة جانبية ، دليل الخلية توصي باستخدام VARCHAR على شار مع UTF-8 لتوفير مساحة.وفي هذه الحالة ، ينبغي أن تكون آمنة للاستخدام VARCHAR و نص.)

نصائح أخرى

ليس بالضرورة.الخلية UTF-8 الدعم يقتصر فقط 3 بايت UTF8 الذي يشمل كل شيء حتى بما في ذلك متعددة اللغات الأساسية الطائرة.إلا إذا كنت بحاجة إلى الشخصيات التي هي في 4 بايت النطاق التي تحتاج إلى استخدام النقطة التخزين ؛ هذا أمر نادر الحدوث ، ولكن ليس من غير المألوف تماما.انظر مقالة ويكيبيديا عن تفصيل ما سوف يكون في عداد المفقودين ، وتقرر ما إذا كان هناك أي شيء هناك هو يجب أن يكون.

وفيما يلي ربط على التعامل مع UTF-8 في PHP. الخلية بشكل جيد جدا مع UTF-8 إذا قمت بتعيين حق الترتيب. PHP من ناحية أخرى لديها الكثير من المشاكل.

وبطبيعة الحال أنها آمنة لاستخدام VARCHAR لتخزين UTF-8 نص وليس هناك حاجة VARBINARY لذلك.

وVARCHAR هو "الطابع مع طول متغير"، والتي سوف تتكيف لا تشوبه شائبة لعدد البايتات اللازمة لتخزين الأحرف وفقا لCHARCODE المحدد.

وهناك أيضا سبب دعم الخلية في UTF-8 يقتصر على بايت 3 فقط. قد تحتاج إلى الغوص في ذات الصلة UTF-8 مستندات التي تتحدث عن إجراء ترميز UTF-8 أن نفهم لماذا هذا صحيح.

وأخيرا وليس آخرا: إذا كنت غير متأكد حول UTF-8، يمكنك أن تختار في دائما إلى UTF-16. ومع ذلك فأنت لا تزال تستخدم VARCHAR لأنها سوف التكيف لا تشوبه شائبة على الصحيح بايت طول مع ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top