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

गैर-अंग्रेज़ी वर्णों को संग्रहीत किया गया, '?????' मिला - MySQL कैरेक्टर सेट इश्यू

बुरी खबर। लेकिन पहले, दोबारा जांच लें:

SELECT col, HEX(col)...

यह देखने के लिए कि तालिका में क्या है। यदि हेक्स 3F . दिखाता है , तो डेटा चला गया है। सही ढंग से संग्रहित, dal वर्ण हेक्स D8AF . होना चाहिए; hah हेक्स है D8AD

क्या हुआ:

  • आपके पास utf8-एन्कोडेड डेटा (अच्छा) था
  • SET NAMES latin1 प्रभावी था (डिफ़ॉल्ट, लेकिन गलत)
  • स्तंभ घोषित किया गया था CHARACTER SET latin1 (डिफ़ॉल्ट, लेकिन गलत)

जैसे ही आपने INSERTed डेटा, इसे लैटिन 1 में बदल दिया गया था, जिसमें फ़ारसी वर्णों के लिए कोई मान नहीं है, इसलिए प्रश्न चिह्नों ने उन्हें बदल दिया।

इलाज (भविष्य के लिए `INSERTs):

  • बहिष्कृत mysql_* इंटरफ़ेस के बजाय mysqli_* इंटरफ़ेस का उपयोग करके अपने एप्लिकेशन को रीकोड करें।
  • utf8-एन्कोडेड डेटा (अच्छा)
  • mysqli_set_charset('utf8')
  • जांचें कि कॉलम और/या टेबल डिफ़ॉल्ट हैं CHARACTER SET utf8
  • यदि आप वेब पेज पर प्रदर्शित कर रहे हैं, <meta...utf8> शीर्ष के पास होना चाहिए।

ऊपर चर्चा CHARACTER SET . के बारे में है , वर्णों की एन्कोडिंग। अब COLLATION . पर टिप के लिए , जिसका उपयोग तुलना और छँटाई के लिए किया जाता है।

यदि आप चाहते हैं कि इनके साथ समान व्यवहार किया जाए:'بِسْمِ' ='بسم', तो COLLATION के लिए utf8_unicode_ci (utf8_general_ci के बजाय) का उपयोग करें ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. गतिशील रूप से बनाए गए डेटाबेस से कनेक्शन कैसे प्रबंधित करें

  2. MySQL में SQL डंप आयात करने में त्रुटि:अज्ञात डेटाबेस / डेटाबेस नहीं बना सकता

  3. MySQL:जुड़ने के प्रकारों का त्वरित विश्लेषण

  4. इस संबंध से प्रविष्टियों का चयन कैसे करें?

  5. रेडीस्टेटमेंट क्वेरी में पैरामीटर को अनदेखा करता है:java.sql.SQLException:पैरामीटर इंडेक्स सीमा से बाहर है (1> पैरामीटर की संख्या, जो 0 है)