फ़ाइल नाम एन्कोडिंग समस्या


9

मुझे एक फ़ारोज़ी नाम वाली फ़ाइल मिल रही है और इसे PHP स्क्रिप्ट में सहेजने की कोशिश कर रहा हूँ:

2010_08_Útflutningur.xls

उबंटू में 10.04 LTS इसे सहेज रहा है:

2010_08_�tflutningur.xls (invalid encoding)

मैंने स्थापित किया है और चला रहा हूं utf8-migration-tool, लेकिन कोई प्रभाव नहीं है।

क्या यह उबंटू त्रुटि है जिसे मैं ठीक कर सकता हूं या मुझे सिर्फ php में नाम छोड़ना और संशोधित करना है?

क्या कोई दस्तावेज है जो बताता है कि उबंटू में फाइलनाम के लिए स्वीकार्य चारसेट क्या है, या एन्कोडिंग चश्मा क्या हैं?

धन्यवाद


आप PHP के माध्यम से फ़ाइल को कैसे प्राप्त और सहेज रहे हैं? (कोड क्या दिखता है?)
कीस कुक

मैं इसे एक ईमेल सिस्टम से पार्स कर रहा था। कोड जटिल है :)
Elzo Valugi

नहीं है एक ऐसी ही क्यू एंड ए मरम्मत टूट फ़ाइल नाम करने के लिए एक स्क्रिप्ट के साथ।
लुम्ब्रिक

जवाबों:


5

यह एन्कोडिंग समस्या की तरह दिखता है। दुर्भाग्य से, जब एनकोडिंग की बात आती है, तो PHP को हाथ से पकड़ना पड़ता है, क्योंकि इसके तार डिफ़ॉल्ट रूप से सिंगल-बाइट होते हैं। यदि आप PHP के भीतर फ़ाइल नाम बना रहे हैं, utf8_encode()तो सहायक होना चाहिए; हालाँकि, ध्यान दें कि यह इनपुट के लिए ISO-8859-1 एन्कोडिंग को मानता है।

दूसरी ओर, यदि आप क्लाइंट द्वारा सबमिट किए गए फ़ाइलनाम का उपयोग कर रहे हैं, तो शायद आप क्लाइंट से आपके लिए एन्कोडिंग करने का अनुरोध कर सकते हैं। यह टैग की accept-charsetविशेषता के साथ किया जाता है <form>, और / या पृष्ठ के चारसेट को सेट करके कि फॉर्म चालू है। कुछ ग्राहक एक या दूसरे का उपयोग कर सकते हैं, इसलिए सर्वोत्तम परिणामों के लिए प्रत्येक के लिए UTF-8 का उपयोग करें।


7

डिफ़ॉल्ट रूप से Ubuntu फ़ाइलनामों के लिए UTF-8 का उपयोग करता है। अधिकांश आधुनिक लिनक्स डिस्ट्रोस और कई अन्य ऑपरेटिंग सिस्टम ऐसा करते हैं (Windows / NTFS UTF-16 के साथ सबसे अच्छा ज्ञात अपवाद है)।

उन फ़ाइलों को ठीक करने के लिए जिनके नाम आपके जैसे गलत एन्कोडिंग में हैं, आप उपयोग करने का प्रयास कर सकते हैं nautilus-filename-repairer

sudo apt-get install nautilus-filename-repairer

आप iconvस्ट्रिंग (फ़ाइल नाम) को एक एन्कोडिंग से दूसरे एन्कोडिंग में बदलने के लिए PHP फ़ंक्शन का उपयोग कर सकते हैं । बेशक इसके लिए जरूरी है कि आपको पता हो कि इनको शुरू करने के लिए कौन सी एन्कोडिंग है।

क्लाइंट से सही ढंग से एन्कोड किए गए फ़ाइलनाम प्राप्त करने के लिए, आप एस्वाल्ड द्वारा बताई गई तकनीक की कोशिश कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.