Utf8 और latin1 के बीच अंतर


128

utf8 और latin1 में क्या अंतर है?


3
वे अलग-अलग एनकोडिंग हैं ( कुछ पात्रों के साथ आम बाइट अनुक्रमों के लिए मैप किए जाते हैं, उदाहरण के लिए एएससीआईआई अक्षर और कई उच्चारण पत्र)। UTF-8 अपने सभी कोडपॉइंट्स के साथ यूनिकोड का एक एन्कोडिंग है; लैटिन 1 में 256 से कम अक्षर हैं।
श्रीवत्सआर

वहाँ भी लैटिन 9 है जो लिनक्स स्थानों में उपलब्ध है और इस प्रश्न में उल्लेख किया जा सकता है: en.wikipedia.org/wiki/ISO/IEC_8859-15
baptx

जवाबों:


151

UTF-8 को दुनिया के वर्चस्व के लिए तैयार किया गया है, लैटिन 1 नहीं है।

यदि आप लैटिन 1 एनकोडिंग का उपयोग करके गैर-लैटिन वर्णों जैसे चीनी, जापानी, हिब्रू, रूसी आदि को संग्रहीत करने का प्रयास कर रहे हैं, तो वे मोजिबेक के रूप में समाप्त हो जाएंगे । आपको इस लेख का परिचयात्मक पाठ उपयोगी हो सकता है (और अगर आपको थोड़ा सा जावा पता है)।

ध्यान दें कि पूर्ण 4-बाइट UTF-8 समर्थन केवल MySQL 5.5 में पेश किया गया था। उस संस्करण से पहले, यह केवल प्रति चरित्र 3 बाइट्स तक जाता है, प्रति वर्ण 4 बाइट्स नहीं। तो, यह केवल बीएमपी विमान का समर्थन करता है और उदाहरण के लिए इमोजी विमान नहीं। यदि आप पूर्ण 4-बाइट UTF-8 समर्थन चाहते हैं, तो MySQL को कम से कम 5.5 पर अपग्रेड करें या PostgfSQL की तरह किसी अन्य RDBMS के लिए जाएं। MySQL 5.5+ में इसे कहा जाता है utf8mb4


31
मैसकल 5.1 3 बाइट यूटीएफ -8 को सपोर्ट करता है , हालांकि मैसकल 5.5 यूटीएफ -8 को यूटीएफपी 4 के रूप में 4 बाइट का समर्थन करता है
18

2
@BalusC क्या आप अधिक विस्तृत रूप से बता सकते हैं कि UTF-8 पूरी तरह से समर्थित नहीं है? इसका मतलब यह है कि Mysql 5.1 सभी यूनिकोड वर्णों को संग्रहीत नहीं कर सकता है ?
पचेरियर

2
@Pacerier: यह केवल 3 बाइट्स प्रति वर्ण का समर्थन करता है, इस प्रकार केवल BMP (पहले 65535 वर्ण) समर्थित है, शेष नहीं। सभी पात्रों के लिए, en.wikipedia.org/wiki/Plane_(Unicode)
बालूसी

2
@BalusC 5.1.63 का उपयोग करने वाले लोगों के लिए और वेब सर्वर के mysql संस्करण को अपडेट करने का विशेषाधिकार नहीं है, इसके विकल्प क्या हो सकते हैं?
पचेरियर

6
@ स्पेसर: आप खुद को टियर के VARBINARYबजाय सहेज सकते हैं VARCHARऔर डीकोड कर सकते हैं । एक नया सवाल पूछने पर विचार करें, शायद बेहतर तरीके हैं।
बालुस

47

लैटिन 1 में प्रत्येक चरित्र बिल्कुल एक बाइट लंबा है। Utf8 में एक चरित्र में एक से अधिक बाइट शामिल हो सकते हैं। नतीजतन utf8 में latin1 की तुलना में अधिक वर्ण हैं (और उनके द्वारा समान रूप से बाइट्स / ब्युटीक्वेंस का प्रतिनिधित्व करने वाले वर्ण आवश्यक नहीं हैं)।


1
Ascii और बिन के बारे में क्या?
युषा अलाय्यूब

8
@YoushaAleayoub ASCII एक एकल-बाइट एन्कोडिंग है जो वर्णों का उपयोग 127 के माध्यम से करता है, इसलिए यह आधे वर्णों को लैटिन 1 के रूप में एन्कोड कर सकता है। यह लैटिन 1 और utf8 दोनों का एक सख्त उपसमूह है, जिसका अर्थ है बाइट्स 0 में दोनों के माध्यम से लेट 1 और यूटीएफ 8 में समान चीजें हैं जो एएससीआईआई में करते हैं। बिन एक एन्कोडिंग नहीं है। यह आमतौर पर एक विकल्प है जो आप किसी फ़ाइल को पढ़ते समय दे सकते हैं, आईओ को किसी भी एन्कोडिंग को लागू नहीं करने के लिए कार्य करता है, लेकिन इसके बजाय बस फ़ाइल को बाइट से पढ़ें।
1717

1
धन्यवाद, मेरा मतलब था binaryकोलाज ...? और कौन सा अंग्रेजी / संख्यात्मक क्षेत्रों के लिए बेहतर है: ascii_general_ciया ascii_bin?
युषा अलायूबे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.