क्या हुआ:
- आपके पास utf8-एन्कोडेड डेटा (अच्छा) था
SET NAMES latin1
प्रभावी था (डिफ़ॉल्ट, लेकिन गलत)- स्तंभ घोषित किया गया था
CHARACTER SET latin1
(डिफ़ॉल्ट, लेकिन गलत)
जैसे ही आपने INSERTed
डेटा, इसे लैटिन 1 में बदल दिया गया था, जिसमें अरबी (कुर्द/फ़ारसी/आदि) वर्णों के लिए कोई मान नहीं है, इसलिए प्रश्न चिह्नों ने उन्हें बदल दिया।
इलाज (भविष्य के लिए INSERTs
):
- utf8-एन्कोडेड डेटा (अच्छा)
mysqli_set_charset('utf8')
(याCHARACTER SET
. को स्थापित करने के लिए आपके क्लाइंट को जो कुछ भी चाहिए )- जांचें कि कॉलम और/या टेबल डिफ़ॉल्ट हैं
CHARACTER SET utf8
- यदि आप वेब पेज पर प्रदर्शित कर रहे हैं,
<meta...utf8>
शीर्ष के पास होना चाहिए।
ऊपर चर्चा CHARACTER SET
. के बारे में है , वर्णों की एन्कोडिंग। अब COLLATION
. पर टिप के लिए , जिसका उपयोग तुलना और छँटाई के लिए किया जाता है।
यह जांचने के लिए कि डेटा सही तरीके से संग्रहीत है, SELECT col, HEX(col)...
. करें .هرچوون
वापस आना चाहिए D987E2808CD8B1DA86D988D988D986
utf8 में अरबी वर्णों का हेक्स D8xx या D9xx होता है।
(utf8mb4
utf8
. की तरह ही काम करता है; या तो अरबी के लिए काम करता है।)
बुरी खबर:डाला गया डेटा '???' में बदल गया पुनर्प्राप्त नहीं किया जा सकता।