2011-11-30 8 views
7

मैं फाइल सिस्टम के एन्कोडिंग के एक ऑपरेटिंग सिस्टम को डिफॉल्ट के रूप में डिटेक्ट करना चाहता हूं, जैसे कि विंडोज ओएस अलग-अलग भाषा संस्करण में, यह विभिन्न एन्कोडिंग (आईएसओ -885 9 -1, एमएस 9 50, big5, gb2312..etc) का उपयोग करेगा, तो मैं कैसे पता लगा सकता हूं PHP में एन्कोडिंग की विभिन्न ऑपरेटिंग सिस्टम? कोई उपाय? धन्यवाद।PHP में ऑपरेटिंग सिस्टम एन्कोडिंग का पता लगाने के लिए कैसे?

+0

क्या आपने एन्कोडिंग पहचान के संबंध में SO पर अन्य प्रश्नों की जांच की है? उदाहरण के लिए इसे देखें: http://stackoverflow.com/questions/910793/php-detect-encoding-and-make-everything-utf-8 या यह एक: http://stackoverflow.com/questions/505562/ पता-फ़ाइल-एन्कोडिंग-इन-php –

+0

मुझे यकीन नहीं है कि फ़ाइल सिस्टम एन्कोडिंग का प्रतिनिधि है ... mb_list_encodings समर्थित एन्कोडिंग की एक सूची लौटाएगा। – Incognito

+0

यह मुझे जवाब नहीं चाहिए और यह मेरे साथ अलग सवाल है – Jasper

उत्तर

1

लिनक्स में एन्कोडिंग नहीं है, फ़ाइल नाम बाइनरी तारों में संग्रहीत हैं और इसमें कुछ भी शामिल हो सकता है। व्याख्या करना कि एक विशिष्ट एन्कोडिंग में एप्लिकेशन तक है। अक्सर यह यूटीएफ -8 होगा। लेकिन हाँ, यह फ़ाइल नामों के 'दर्शक' पर निर्भर करता है।

ओएस/एक्स पर फाइल सिस्टम डी

रूप UTF-8 सामान्य उपयोग करेगा दुर्भाग्य से, मैं उत्तर नहीं दे सकता कि यह खिड़कियों पर है को एक्सेस करना। आंतरिक रूप से इसे यूटीएफ -16 की विविधता के रूप में संग्रहीत किया जाता है लेकिन मेरी मशीन पर PHP के माध्यम से इसे एक्सेस करने के लिए एपीआई सीपी -1252 है, लेकिन हाँ, यह भाषा पर निर्भर करता है।

0

print_r(explode(";", setlocale(LC_ALL, 0))); 

तब एन्कोडिंग को

0

FileSystem करता कोड पेज कन्वर्ट जरूरत का प्रयास नहीं एन्कोडिंग का एक प्रकार, प्रत्येक फ़ाइल एन्कोडिंग के विभिन्न प्रकार का उपयोग कर सकते है, इसलिए आप सभी की जरूरत लगता है फ़ाइल नाम स्ट्रिंग को संसाधित करने के लिए एक सही एन्कोडिंग।

फ़ाइल नाम के एन्कोडिंग का पता लगाने के लिए, आप उस फ़ाइल नाम को अपने सभी ज्ञात एन्कोड सूची में कनवर्ट करने के लिए "कोशिश करें" कर सकते हैं, और समेकित स्ट्रिंग के साथ मूल फ़ाइल नाम स्ट्रिंग की तुलना कर सकते हैं, यदि वह बराबर है, तो वह एन्कोडिंग वह है जिसे आप ढूंढ रहे हैं ।

एक स्ट्रिंग को एक प्रकार के एन्कोडिंग में कनवर्ट करें जिसे मैं This way का उपयोग करता हूं। तो यह काम करने के लिए, आप उदाहरण के लिए निम्नलिखित कोड देख सकते हैं।

function getActuallEncoding($text) { 
    $encodingList = array('UTF-8', 'gb2312', 'ISO-8859-1', 'big5'); // Add more if you need. 
    foreach($encodingList as $oneEncode) { 
     $oneResult = iconv(mb_detect_encoding($text, mb_detect_order(), true), $oneEncode, $text); 
     if(md5($oneResult) == md5($text)) return $oneEncode; 
    } 
    return "UNKNOWN"; // This return value may cause problem, just let you know. 
} 

आशा है कि मदद करता है।

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