2012-07-18 16 views
28

utf16 या utf32? मैं कई भाषाओं में सामग्री स्टोर करने की कोशिश कर रहा हूं। कुछ भाषाएं डबल-चौड़े फोंट का उपयोग करती हैं (उदाहरण के लिए, जापानी फोंट अक्सर अंग्रेजी फोंट के रूप में चौड़े होते हैं)। मुझे यकीन नहीं है कि मुझे किस प्रकार का डेटाबेस उपयोग करना चाहिए। इन चार वर्णों के बीच मतभेदों के बारे में कोई जानकारी ...Utf8_general_ci या utf8mb4 या ...?

उत्तर

40

MySQL का utf32 और utf8mb4 (साथ ही मानक यूटीएफ -8) यूनिकोड द्वारा निर्दिष्ट किसी भी चरित्र को सीधे स्टोर कर सकता है; पूर्व प्रति आकार 4 बाइट्स पर तय आकार है जबकि उत्तरार्द्ध प्रति चरित्र 1 और 4 बाइट्स के बीच है।

utf8mb3 और मूल utf8 केवल पहले 65,536 कोडपॉइंट स्टोर कर सकता है, जिसमें सीजेवीके (चीनी, जापानी, वियतनाम, कोरियाई) शामिल होगा, और प्रति चरित्र 1 से 3 बाइट्स का उपयोग करेगा।

utf16 पहले 65,536 कोडपॉइंट्स के लिए 2 बाइट्स और अन्य सभी चीज़ों के लिए 4 बाइट्स का उपयोग करता है।

फोंट के लिए, यह सख्ती से एक दृश्य चीज है।

"The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)"

भी MySQL documentation for Unicode support देखें।

+5

बस अतिरिक्त स्पष्ट होने के लिए, 'utf8_general' के बारे में टिप्पणी अन्य सभी 'utf8_ *' collations पर भी लागू होती है; सभी MySQL के 'utf8mb3' उर्फ' utf8' charset का उपयोग करेंगे। –

+0

@ जॉन फ्लाइटनेस धन्यवाद। आपकी टिप्पणी सिर्फ वही है जो मैं अगले के बारे में पूछने जा रहा था। मैंने सोचा कि यूटीएफ -16 ने मंदारिन पात्रों के लिए 2 बाइट्स का इस्तेमाल किया, उदाहरण के लिए, हालांकि? मैं आपके द्वारा दिए गए दस्तावेज को देख रहा हूं, उम्मीद कर रहा हूं कि इसमें 65,536 का अर्थ है। एक्सडी –

+0

चीनी वर्ण मूल बहुभाषी विमान (पहले 65,536 कोडपॉइंट्स) के भीतर हैं। –

संबंधित मुद्दे