JSON और BSON केवल मान्य UTF-8 स्ट्रिंग्स को एनकोड / डिकोड कर सकते हैं, यदि आपका डेटा (इनपुट शामिल) UTF-8 नहीं है, तो आपको इसे किसी भी JSON निर्भर सिस्टम में पास करने से पहले इसे कन्वर्ट करने की आवश्यकता है, जैसे:
$string = iconv('UTF-8', 'UTF-8//IGNORE', $string); // or
$string = iconv('UTF-8', 'UTF-8//TRANSLIT', $string); // or even
$string = iconv('UTF-8', 'UTF-8//TRANSLIT//IGNORE', $string); // not sure how this behaves
व्यक्तिगत रूप से मुझे पहला विकल्प पसंद है, देखें iconv()
मैनुअल पेज। अन्य विकल्पों में शामिल हैं:
mb_convert_encoding()
utf8_encode(utf8_decode($string))
आपको हमेशा यह सुनिश्चित करना चाहिए कि आपके तार यूटीएफ -8 एन्कोडेड हैं, यहां तक कि उपयोगकर्ता द्वारा सबमिट किए गए हैं, हालांकि जब से आपने उल्लेख किया है कि आप MySQL से MongoDB में माइग्रेट कर रहे हैं, तो क्या आपने अपने वर्तमान डेटाबेस को CSV में निर्यात करने और आने वाली आयात स्क्रिप्ट का उपयोग करने का प्रयास किया है मोंगो के साथ? उन्हें इसे संभालना चाहिए...
संपादित करें: मैंने उल्लेख किया है कि बीएसओएन केवल यूटीएफ -8 को संभाल सकता है, लेकिन मुझे यकीन नहीं है कि यह बिल्कुल सच है, मेरे पास एक अस्पष्ट विचार है कि बीएसओएन डेटा को एन्कोड/डीकोड करने के लिए यूटीएफ -16 या यूटीएफ -32 का उपयोग करता है, लेकिन मैं जांच नहीं कर सकता अब।