यहाँ फ़ाइल नाम के कुछ उदाहरण है:PHP में मल्टीबाइट फ़ाइल नामों को एन्कोड कैसे करें और उन्हें जावास्क्रिप्ट में डीकोड करें?
漢語.jpg (Chinese)
Федерация.jpg (Russian)
AbÇöişÜĞ.jpg (Turkish, ISO-8859-9)
...
मैं rawurlencode(mb_convert_encoding($file, "UTF-8", mb_detect_encoding($file)))
की कोशिश की है, लेकिन यह काम नहीं कर रहा,% 3F (नियमित प्रश्न चिह्न) के रूप में मुद्रित सभी चीनी और रूसी अक्षर और सभी तुर्की वर्ण निकाल दिए जाते हैं।
मैं विंडोज, PHP 5.3 पर परीक्षण कर रहा हूं।
केवल मुझे मिला समाधान केवल एन्कोडिंग दर्ज करना है: rawurlencode(mb_convert_encoding($file, "UTF-8", "ISO-8859-9"))
यह केवल तुर्की वर्णों के लिए काम करता है।
वैसे, mb_detect_encoding($file)
हमेशा उपरोक्त फ़ाइलों के लिए "यूटीएफ -8" देता है।
संपादित करें:
के बाद मैं निम्नलिखित कोड भाग गया मुझे लगता है कि mb_convert_encoding()
नहीं कर सकते मेरी समस्या का समाधान:
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("mp", FilesystemIterator::UNIX_PATHS));
$iterator = new RegexIterator($iterator, '/^.+\.(gif|jpg|jpeg|png)$/i', RegexIterator::GET_MATCH);
foreach ($iterator as $file)
{
foreach (mb_list_encodings() as $encoding)
var_dump(rawurlencode(mb_convert_encoding($file[0], "UTF-8", $encoding)) . " : " . $encoding);
}
मुझे लगता है कि इस एन्कोडिंग के बारे में कुछ है, लेकिन मैं कैसे करना है पता नहीं है।
mb_detect_encoding() सर्वज्ञ नहीं है और बार-बार असफल हो जायेगी, सिर्फ इसलिए कि यह बताने के लिए लगभग असंभव है यकीन है कि क्या पाठ का एक हिस्सा एन्कोडिंग का उपयोग करता है के लिए। –