Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL, UTF-8 और इमोजी वर्ण

मुद्दा गीला है डीबी की एक विशेषक असंवेदनशील तुलना है। दूसरा मुद्दा वर्णों से बना है, ï को एक यूनिकोड वर्ण या दो के रूप में एक सरोगेट जोड़ी बनाने के रूप में व्यक्त किया जा सकता है। एक स्ट्रिंग को पूर्व-रचित या विघटित रूप में बदलने के तरीके हैं:precomposedStringWith* और decomposedStringWith*।

ऐसा लगता है कि MySQL यूनिकोड ucs2 के दो रूपों का समर्थन करता है (यह एक पुराना रूप है जिसे utf16 द्वारा अधिक्रमित किया गया था) जो प्रति वर्ण 16-बिट्स और utf8 प्रति वर्ण 3 बाइट्स तक है। बुरी खबर यह है कि न तो फॉर्म प्लेन 1 वर्णों का समर्थन करने वाला है, जिसके लिए 17 बिट्स की आवश्यकता होती है। (मुख्य रूप से इमोजी)। ऐसा लगता है कि MySQL 5.5.3 और बाद वाले वर्शन utf8mb4, utf16, और utf32 को भी सपोर्ट करते हैं, BMP और सप्लीमेंट्री कैरेक्टर (इमोजी पढ़ें) को सपोर्ट करते हैं। देखें MySQL यूनिकोड कैरेक्टर सेट

विभिन्न यूनिकोड बाइट प्रतिनिधित्वों को प्रदर्शित करने के लिए यहां कुछ कोड और परिणाम दिए गए हैं।
यूनिकोड एक 21 बिट एन्कोडिंग सिस्टम है।
UTF32 सीधे कोड बिंदुओं का प्रतिनिधित्व करता है और स्पष्ट रूप से विघटित सरोगेट जोड़े को प्रदर्शित करता है।
UTF8 और UTF16 यूनिकोड वर्ण का प्रतिनिधित्व करने के लिए एक या अधिक बाइट्स की आवश्यकता होती है।

NSLog(@"character: %@", @"Å");
NSLog(@"decomposedStringWithCanonicalMapping UTF8:  %@", [[@"Å" decomposedStringWithCanonicalMapping] dataUsingEncoding:NSUTF8StringEncoding]);
NSLog(@"decomposedStringWithCanonicalMapping UTF16: %@", [[@"Å" decomposedStringWithCanonicalMapping] dataUsingEncoding:NSUTF16BigEndianStringEncoding]);
NSLog(@"decomposedStringWithCanonicalMapping UTF32: %@", [[@"Å" decomposedStringWithCanonicalMapping] dataUsingEncoding:NSUTF32BigEndianStringEncoding]);

NSLog(@"precomposedStringWithCanonicalMapping UTF8:  %@", [[@"Å" precomposedStringWithCanonicalMapping] dataUsingEncoding:NSUTF8StringEncoding]);
NSLog(@"precomposedStringWithCanonicalMapping UTF16: %@", [[@"Å" precomposedStringWithCanonicalMapping] dataUsingEncoding:NSUTF16BigEndianStringEncoding]);
NSLog(@"precomposedStringWithCanonicalMapping UTF32: %@", [[@"Å" precomposedStringWithCanonicalMapping] dataUsingEncoding:NSUTF32BigEndianStringEncoding]);

NSLog(@"character: %@", @"😱");
NSLog(@"dataUsingEncoding UTF8:  %@", [@"😱" dataUsingEncoding:NSUTF8StringEncoding]);
NSLog(@"dataUsingEncoding UTF16: %@", [@"😱" dataUsingEncoding:NSUTF16BigEndianStringEncoding]);
NSLog(@"dataUsingEncoding UTF32: %@", [@"😱" dataUsingEncoding:NSUTF32BigEndianStringEncoding]);

// कुछ सरोगेट जोड़े के लिए कोई अन्य रूप नहीं है

NSString *aReverse = [[NSString alloc] initWithBytes:"\xD8\x3C\xDD\x70\x00" length:4 encoding:NSUTF16BigEndianStringEncoding];
NSLog(@"character: %@", aReverse);
NSLog(@"dataUsingEncoding UTF8:  %@", [aReverse dataUsingEncoding:NSUTF8StringEncoding]);
NSLog(@"dataUsingEncoding UTF16: %@", [aReverse dataUsingEncoding:NSUTF16BigEndianStringEncoding]);
NSLog(@"dataUsingEncoding UTF32: %@", [aReverse dataUsingEncoding:NSUTF32BigEndianStringEncoding]);

एनएसएलओजी आउटपुट:

character: Å
decomposedStringWithCanonicalMapping UTF8:  <41cc8a>   
decomposedStringWithCanonicalMapping UTF16: <0041030a>   
decomposedStringWithCanonicalMapping UTF32: <00000041 0000030a>   

precomposedStringWithCanonicalMapping UTF8:  <c385>   
precomposedStringWithCanonicalMapping UTF16: <00c5>   
precomposedStringWithCanonicalMapping UTF32: <000000c5>   

character: 😱
dataUsingEncoding UTF8:  <f09f98b1>   
dataUsingEncoding UTF16: <d83dde31>   
dataUsingEncoding UTF32: <0001f631>   

character: 🅰
dataUsingEncoding UTF8:  <f09f85b0>
dataUsingEncoding UTF16: <d83cdd70>
dataUsingEncoding UTF32: <0001f170>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सी # से mysql.exe का उपयोग कैसे करें

  2. शामिल होने का उपयोग करके इस MySQL क्वेरी को कैसे सुधारें?

  3. PHP चर के लिए MySQL डेटाबेस मान असाइन करें

  4. MySQL क्वेरी - URL नामों का उपयोग करके डेटा को इंडेंटिफाई करना जहां डेटा को एक पदानुक्रम में व्यवस्थित किया जाता है

  5. MySQL एक ही सत्र आईडी वाले रिकॉर्ड की प्रतिध्वनि संख्या