अद्यतन में यह संभव नहीं (13 जुलाई '17)
हालांकि डॉक्स यह उल्लेख करने के लिए नहीं है, पीएचपी 7.0 और इसके बाद के संस्करण अंत में यूनिकोड फ़ाइल नाम पर समर्थन करता है बॉक्स के बाहर विंडोज़। PHP की फाइल सिस्टम एपीआई default_charset
के अनुसार फ़ाइल नाम स्वीकार और लौटाती है, जो डिफ़ॉल्ट रूप से UTF-8
है।
बग फ़िक्स यहाँ देखें: https://github.com/php/php-src/commit/3d3f11ede4cc7c83d64cc5edaae7c29ce9c6986f
अद्यतन (29 जनवरी '15)
आप PHP एक्सटेंशन डायरेक्ट्री तक पहुंच है, तो आप https://github.com/kenjiuno/php-wfio पर php-wfio.dll
स्थापित करने की कोशिश कर सकते हैं और को देखें wfio://
प्रोटोकॉल के माध्यम से फ़ाइलें। विशेष रूप से स्थानीय फ़ाइल का उपयोग, जो पीएचपी बजाय सिस्टम स्थान का उपयोग करता है यूनिकोड का मतलब है के लिए
file_get_contents("wfio://你好.xml");
मूल उत्तर
विंडोज पर पीएचपी विरासत "एएनएसआई एपीआई" का उपयोग करता है।
उन फ़ाइलों तक पहुंचने के लिए जिनके फ़ाइल नामों में यूनिकोड है, आपको फ़ाइल सिस्टम को वर्तमान सिस्टम लोकेल के लिए निर्दिष्ट एन्कोडिंग में परिवर्तित करना होगा। यदि फ़ाइल नाम में वर्ण हैं जो निर्दिष्ट एन्कोडिंग में प्रतिनिधित्व योग्य नहीं हैं, तो आप भाग्य से बाहर हैं(अद्यतन: समाधान के लिए ऊपर अनुभाग देखें)। scandir
इन फ़ाइलों के लिए गड़बड़ी वापस कर देगा और स्ट्रिंग को fopen
में वापस कर देगा और समकक्ष असफल हो जाएंगे।
सही एन्कोडिंग का उपयोग करना ढूंढने के लिए, आप <?=setlocale(LC_TYPE,0)?>
बुला और MSDN अनुच्छेद https://msdn.microsoft.com/en-us/library/dd317756(VS.85).aspx पर कोड पृष्ठ पहचानकर्ता (.
के बाद संख्या) ऊपर देखकर भी सिस्टम स्थान मिल सकता है।
उदाहरण के लिए, यदि फ़ंक्शन Chinese (Traditional)_HKG.950
देता है, तो इसका मतलब है कि 950 कोडपृष्ठ उपयोग में है और फ़ाइल नाम को बड़े -5 एन्कोडिंग में परिवर्तित किया जाना चाहिए।
$fname = iconv('UTF-8','big-5',"你好.xml");
file_get_contents($fname);
या इस प्रकार यदि आप सीधे के रूप में बिग-5 फ़ाइल को सहेजने: उस मामले में, अपने कोड इस प्रकार, यदि आपकी फ़ाइल को UTF-8 (अधिमानतः बीओएम के बिना) में सहेजा गया है होना होगा
$fname = "你好.xml";
file_get_contents($fname);
क्या यह कोड चालू है? आपने file_get_contents में $ res के साथ $ fname स्विच नहीं किया था, या वह सिर्फ एक टाइपो था? – ryanday
यह मेरा टाइपो है। मैंने वास्तव में मूल्यों को स्विच किया था। –
मुझे अपने एक्सपी सिस्टम में मिला और आपका कोड आज़माया। मैंने PHP फ़ाइल को यूनिकोड में सहेजा, और आपने जो लिखा है उसकी प्रतिलिपि/चिपकाया और मैं फ़ाइल (उसी फ़ाइल नाम) को पढ़ सकता हूं। आपकी स्रोत फ़ाइल में कौन सी एन्कोडिंग सहेजी गई है? – ryanday