$key = mb_convert_encoding($key, 'UTF-16BE', "auto");
(क्या आप वाकई बीई चाहते हैं? यह एक बहुत ही कम इस्तेमाल किया जाने वाला एन्कोडिंग है। विंडोज़ "यूनिकोड" यूटीएफ -16LE है।)
मैं "auto"
. का उपयोग करने से बचूंगा from_encoding के रूप में। यह एक अविश्वसनीय चकमा है जो अक्सर गलत परिणाम देगा विशेष रूप से छोटे तारों पर। जैसा कि इनपुट स्पष्ट रूप से UTF-8 है, आपको इसके बजाय स्पष्ट रूप से बताना चाहिए।
fputcsv($f, array_merge($firstLineKeys, $lineEncoded));
दुर्भाग्य से fputcsv
UTF-16-एन्कोडेड फ़ाइल को नहीं लिख सकता। यह एकल-बाइट ASCII अल्पविराम/उद्धरण/न्यूलाइन का उपयोग करता है, इसलिए यह केवल ASCII सुपरसेट वाले एन्कोडिंग के लिए काम करता है। इसलिए यदि आप इसका उपयोग करना चाहते हैं तो आपको पूरी फ़ाइल को UTF-8 के रूप में लिखना होगा, और फिर पूरी फ़ाइल को UTF-16 में ट्रांसकोड करना होगा।
हो सकता है कि आप इसके बजाय किसी भिन्न (या अपने स्वयं के) CSV लेखक पर विचार करना चाहें; साथ ही गैर-ASCII एन्कोडिंग के लिए उपयोग करने में कष्टप्रद होने के कारण, fputcsv
सीएसवी फाइलों के लिए आरएफसी मानक का भी अनुपालन नहीं करता है, इसलिए आप आसानी से ऐसी फाइलें उत्पन्न कर सकते हैं जो अधिकांश सीएसवी-खपत सॉफ्टवेयर ठीक से लोड नहीं कर सकते।
PHP के इन-बिल्ट CSV फंक्शन अनिवार्य रूप से सभी के समय की बर्बादी हैं।