2010-08-23 9 views
7

मेरी स्थानीय होस्ट मशीन पर, मैं दो फ़ाइलें:readdir और scandir

IMG_9029_измен.размер.jpg और słońce32 opalenier1.jpg

मैं scandir() या readdir() द्वारा विषयों के फ़ाइल नाम प्राप्त करना चाहते हैं लेकिन extractly नहीं मिल सकता है फ़ाइल का नाम। वे इस तरह हैं:

IMG_9029_?????.??????.jpg and slonce32 opalenier.jpg 

Window XP SP3, php5.2.12 

IMG_9029_измен.размер.jpg and słońce32 opalenier1.jpg की तरह फ़ाइल नाम मैं कैसे मिल सकता है?

+0

आपका फ़ाइल नाम यूनिकोड में है? और जब आप अपने वेबपृष्ठ पर फ़ाइल नाम आउटपुट करते हैं, तो यूनिकोड में भी वेबपृष्ठ एन्कोडिंग है? – minghan

+0

http://stackoverflow.com/questions/977635/how-to-open-file-in-php-that-has-unicode-characters-in-its-name – Bakudan

उत्तर

1

नाम शायद सही हैं, लेकिन आपको अपने पृष्ठ के एन्कोडिंग को यूटीएफ -8 पर सेट करने की आवश्यकता है।

अपने पृष्ठों के हेडर अनुभाग को यह करें:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

फिर UTF8 करने के लिए अपने तार परिवर्तित इसलिए विशेष वर्ण सही तरीके से प्रदर्शन।

मैं एक समारोह है कि यह करता है बनाया है, यह Encoding::toUTF8().

कहा जाता है उपयोग:

$utf8_string = Encoding::toUTF8($utf8_or_latin1_or_mixed_string); 

डाउनलोड:

http://dl.dropbox.com/u/186012/PHP/forceUTF8.zip

+1

सुझाव के लिए धन्यवाद। फ़िलनाम को IMG_9029_ में बदला गया था ?? ???? ??????। jpg जब मैं readdir() या स्कैंडर() का उपयोग करता हूं। इस नाम से एन्कोड कैसे करें। मुझे लगता है कि यह संभव नहीं है – Chameron

8

मुझे लगता है कि अपने php एनकोडिंग utf-8 है।

$files = scandir($dirname); 
foreach ($files as $file) { 
    $filename = iconv ("windows-1251" , "UTF-8", $file); 
    echo $filename ."\n"; 
} 

इसे पहली फ़ाइल के लिए काम करना चाहिए, लेकिन मुझे नहीं पता कि दूसरी फ़ाइल के लिए कौन सी एन्कोडिंग उपयोग है।

मुख्य समस्या यह है कि PHP 5 फ़ाइल संचालन के लिए utf-8 का समर्थन नहीं करता है। यह आंतरिक रूप से ansi है। तो यह ansi api (केवल 8 बिट एन्कोडिंग) का उपयोग कर फ़ाइल नाम पढ़ता है।

संबंधित मुद्दे