mysql - What are the diffrences between utf8_general_ci and utf8_unicode_ci? -


संभव डुप्लिकेट:

मेरे पास यूनिकोड के लिए दो विकल्प हैं जो एक mysql डेटाबेस के लिए आशाजनक दिखते हैं।

  utf8_general_ci यूनिकोड (बहुभाषी), केस-असंवेदनशील utf8_unicode_ci यूनिकोड (बहुभाषी), केस-असंवेदनशील  < / Pre> 

क्या आप कृपया बता सकते हैं कि utf8_general_ci और utf8_unicode_ci के बीच अंतर क्या है? डेटाबेस डिजाइन करते समय किसी को चुनने का क्या प्रभाव होता है?

utf8_general_ci एक बहुत ही सरल है - और यूनिकोड पर, बहुत टूटा - मिलान, जो सामान्य यूनिकोड पाठ पर गलत परिणाम देता है

  • ऊपरी मामले में धर्मान्तरित
  • यह जो भी करता है:
    • यूनिकोड सामान्यीकरण के लिए डी।

      यह यूनिकोड पर सही ढंग से काम नहीं करता है, क्योंकि यह यूनिकोड आवरण को समझ में नहीं आता है। अकेले यूनिकोड आवरण एक एएससीआईआई के दिमाग के दृष्टिकोण से अधिक जटिल हो सकता है। उदाहरण के लिए:

      • "ẞ" का लोअरकेस "β" है, लेकिन "β" का ऊपरी भाग "एसएस" है।
      • दो लोअरकेस यूनानी सिग्मा हैं, लेकिन केवल एक अपरकेस; "Σίσυφος" पर विचार करें।
      • "ø" जैसी पत्रिकाएं "ओ" के साथ-साथ एक डाइक्रिटिक से घिसना नहीं हैं, जिसका अर्थ है कि यह सही तरह से सॉर्ट नहीं करेगा।

        कई अन्य subtleties हैं।

        1. utf8_unicode_ci मानक का उपयोग करता है, तथाकथित विस्तार और लिगचर का समर्थन करता है, उदाहरण के लिए: जर्मन अक्षर ß (U + 00DF अक्षर SHARP S) सॉर्ट किया गया है "एसएस" लेटर (यू + 0152 लैटिन कैपिटल लिगैचर ओई) के पास "ओई" के पास सॉर्ट किया गया है

        utf8_general_ci विस्तार / लिगचर का समर्थन नहीं करता, यह इन सभी अक्षरों को एक अक्षर के रूप में रूपांतरित करता है, और कभी-कभी गलत क्रम में।

        1. utf8_unicode_ci है <सामान्य> सभी लिपियों के लिए अधिक सटीक है उदाहरण के लिए, सिरिलिक ब्लॉक पर: utf8_unicode_ci इन सभी भाषाओं के लिए ठीक है: रूसी, बल्गेरियाई, बेलारूशियन, मैसेडोनियन, सर्बियाई और यूक्रेनी जबकि utf8_general_ci केवल रूसी और बल्गेरियाई सबरीसेट का सिरिलिक के लिए ठीक है बेलारूसी, मैसेडोनियन, सर्बियाई और यूक्रेनी में इस्तेमाल किए गए अतिरिक्त पत्रों को अच्छी तरह से व्यवस्थित नहीं किया जाता है।

        utf8_unicode_ci की लागत यह है कि यह छोटा बिट utf8_general_ci से अधिक है। लेकिन यह वह कीमत है जिसे आप शुद्धता के लिए भुगतान करते हैं या तो आपके पास एक तेज़ उत्तर हो सकता है जो गलत है, या बहुत थोड़ा धीमा जवाब है जो सही है। आपकी पंसद। गलत उत्तर देने के लिए कभी भी औचित्यपूर्ण होना बहुत मुश्किल है, इसलिए यह मानना ​​अच्छा है कि utf8_general_ci मौजूद नहीं है और हमेशा utf8_unicode_ci का उपयोग करें। ठीक है, जब तक आप गलत उत्तर नहीं चाहते।

        स्रोत:


  • Comments