MySQL
चरित्र सेट और कोलाज
खोज…
घोषणा
CREATE TABLE foo ( ...
name CHARACTER SET utf8mb4
... );
संबंध
चरित्र सेट का उपयोग करने के लिए महत्वपूर्ण MySQL-server को बताना है कि क्लाइंट के बाइट्स को एन्कोडिंग क्या है। यहाँ एक तरीका है:
SET NAMES utf8mb4;
प्रत्येक भाषा (PHP, पायथन, जावा, ...) का अपना तरीका होता है जो आमतौर पर SET NAMES
लिए बेहतर होता है।
उदाहरण के लिए: SET NAMES utf8mb4
, साथ में एक स्तंभ के साथ घोषित CHARACTER SET latin1
- इस latin1 से utf8mb4 में बदल जाएगा जब INSERTing
और जब परिवर्तित वापस SELECTing
।
कौन सा चार्टर सेट और संकलन?
सैकड़ों टकरावों के साथ दर्जनों चरित्र सेट हैं। (एक दिया गया टकराव केवल एक वर्ण सेट के अंतर्गत आता है।) SHOW COLLATION;
का आउटपुट देखें SHOW COLLATION;
।
आमतौर पर केवल 4 CHARACTER SETs
जो मायने रखते हैं:
ascii -- basic 7-bit codes.
latin1 -- ascii, plus most characters needed for Western European languages.
utf8 -- the 1-, 2-, and 3-byte subset of utf8. This excludes Emoji and some of Chinese.
utf8mb4 -- the full set of UTF8 characters, covering all current languages.
सभी में अंग्रेजी वर्ण शामिल हैं, जो पहचान के अनुसार एन्कोडेड हैं। utf8 utf8mb4 का सबसेट है।
सर्वश्रेष्ठ प्रणालियां...
- किसी भी
TEXT
याVARCHAR
कॉलम के लिए utf8mb4 का उपयोग करें, जिसमें विभिन्न प्रकार की भाषाएं हो सकती हैं। - हेक्स स्ट्रिंग्स (यूयूआईडी, एमडी 5, आदि) और सरल कोड (देश_कोड, पोस्टल_कोड, आदि) के लिए एससीआई (लैटिन 1 ठीक है) का उपयोग करें।
utf8mb4 संस्करण 5.5.3 तक मौजूद नहीं था, इसलिए इससे पहले utf8 सबसे अच्छा उपलब्ध था।
MySQL के बाहर , "UTF8" का मतलब MySQL के utf8mb4 से है, न कि MySQL के utf8 से।
_ci
नाम के साथ शुरू होता है और आमतौर पर "केस और उच्चारण असंवेदनशील" या _bin
लिए "बस बिट्स की तुलना करें" के साथ समाप्त होता है।
'नवीनतम' utf8mb4 utf8mb4_unicode_520_ci
, जो utf8mb4_unicode_520_ci
5.20 पर आधारित है। यदि आप एक ही भाषा के साथ काम कर रहे हैं, तो आप कह सकते हैं, utf8mb4_polish_ci
, जो पोलिश सम्मेलनों के आधार पर अक्षरों को थोड़ा पुनर्व्यवस्थित करेगा।
तालिका और फ़ील्ड पर वर्ण सेट करना
आप एक सेट कर सकते हैं वर्ण सेट दोनों तालिका के अनुसार, साथ ही अलग-अलग क्षेत्र के अनुसार का उपयोग कर CHARACTER SET
और CHARSET
बयान:
CREATE TABLE Address (
`AddressID` INTEGER NOT NULL PRIMARY KEY,
`Street` VARCHAR(80) CHARACTER SET ASCII,
`City` VARCHAR(80),
`Country` VARCHAR(80) DEFAULT "United States",
`Active` BOOLEAN DEFAULT 1,
) Engine=InnoDB default charset=UTF8;
City
और Country
UTF8
का उपयोग करेंगे, क्योंकि हम सेट करते हैं कि तालिका के लिए डिफ़ॉल्ट वर्ण सेट के रूप में। दूसरी ओर Street
ASCII
का उपयोग करेगी, क्योंकि हमने विशेष रूप से ऐसा करने के लिए कहा है।
सही चरित्र सेट करना आपके डेटासेट पर अत्यधिक निर्भर है, लेकिन आपके डेटा के साथ काम करने वाले सिस्टम के बीच पोर्टेबिलिटी को भी बेहतर कर सकता है।