निर्देशिका और फ़ाइल नाम में जर्मन umlauts के एन्कोडिंग को ठीक करें (ü = u andê और इतने पर)


13

मेरे पास कई ज़िप-फाइलें हैं जहां जर्मन umlauts (äüöÄÜÖß) के लिए एन्कोडिंग त्रुटियां हैं। वे दोनों फ़ाइल नाम में दिखाते हैं। ज़िप के साथ-साथ इस तरह शामिल निर्देशिकाओं और फ़ाइलों में शामिल हैं:

  • फुनफ = फूउन्फ
  • रैबर = राऊबेर
  • Überfall = U╠êberfall

और इसी तरह। आमतौर पर मैं लिनक्स का उपयोग करता हूं, लेकिन इस मुद्दे के कारण मैंने एक विंडोज 7 वीएम की भी कोशिश की, लेकिन इसके परिणामस्वरूप समान एन्कोडिंग गड़बड़ हो जाती है। लिनक्स पर मैंने कनवम् और डिटॉक्स के साथ खेला, लेकिन कोई सफलता नहीं मिली।

जब मैं उपयोग करता हूं

  • convmv -f iso-8859-1 -t utf8 --replace --notest -r *

मुझे "स्किपिंग, पहले से ही UTF-8" मिलता है।

इस बारे में कोई विचार?


आप किस प्राचीन प्रणाली का उपयोग कर रहे हैं? सभी मौजूदा लिनक्स वितरण अब UTF-8 का उपयोग करते हैं।
बैचिएक्स

क्या यह एक फाइलसिस्टम समस्या हो सकती है? शायद यह यूटीएफ में नहीं है?
टेराडॉन

मैं लिनक्स मिंट 13 (कर्नेल 3.2.0-23 के साथ उबंटू 12.04 एलटीएस पर आधारित) का उपयोग करता हूं, इसलिए यह एंटीक से बहुत दूर है। और जैसा कि मैंने पहले ही लिखा था मैंने भी विंडोज 7 वीएम पर उन फाइलों की कोशिश की। लेकिन निश्चित रूप से मैं नहीं जानता कि जो ज़िप फाइल का इस्तेमाल करता है वह क्या बनाता है।
साइडर

1
यह एन्कोडिंग किसी प्रकार का डॉस एन्कोडिंग लगता है। आमतौर पर अगर मुझे यूटीएफ 8 के साथ जर्मन umlauts कूटबन्धन वाले मुद्दे दिखते हैं जैसे ä = ä या Ü = Ã
cider

@ साइडर का प्रयास करें find -type f -print0 |xargs -r -n1 -0 convmv -f WINDOWS-1252 -t UTF-8 --notest यह वर्तमान dir से फ़ाइलों को आगे की ओर खोजता है और प्रत्येक फ़ाइल पर अलग से convmv चलाता है। फ़ाइलनाम को अशक्त सूची के रूप में जाना जाता है।
मानवे

जवाबों:


2

कारण यह है कि आपको "पहले से ही UTF-8" चेतावनी मिल रही है कि उन तार वास्तव में पहले से ही UTF-8 में हैं। "Ü" चरित्र को दो बाइट्स "\ xCC" और "\ x88" के बाद OSX- शैली को 'यू' के रूप में एन्कोड किया गया था। ये दोनों बाइट्स एक साथ यूआईएफ -8 का प्रतिनिधित्व करते हैं, जो कि संयोजन का संयोजन है।

यदि आप यहां कोड पेज 437 लिस्टिंग को देखते हैं , तो आप \ xCC वर्ण को "at" और \ x88 वर्ण को "ê" के रूप में देखेंगे।

जो कुछ भी है कि आप उन चरित्र दृश्यों को प्रदर्शित करने के लिए उपयोग कर रहे हैं, उन्हें यूटीएफ -8 के रूप में नहीं बल्कि सीपी 437 के रूप में व्याख्या कर रहे हैं।

एक त्वरित प्रमाण, यदि आप माणिक पढ़ते हैं, तो यह मेरे UTF-8 टर्मिनल में अपेक्षित रूप से प्रदर्शित होता है:

$ ruby -e 'puts "u\xCC\x88"' | iconv -f cp437 -t utf-8
ü
$ ruby -e 'puts "u\xCC\x88"'
ü

0

मेरा अनुमान है कि फाइलसिस्टम है जिसे आप फाइल को डिकम्पोज या मैनिपुलेट करने का प्रयास कर रहे हैं। FAT32 आपके umlauts को पसंद नहीं करने वाला है। फ़्लैश ड्राइव (या आपके पास क्या है) से इन फ़ाइलों को कॉपी करने का प्रयास करें और फिर फ़ाइल नाम किस प्रकार के वर्णों को देखने के लिए ज़िप फ़ाइल को विघटित करें।

NTFS (Windows) और Ext4 (टकसाल) दोनों को एन्कोडिंग नाम की समस्या नहीं होनी चाहिए।

FAT32 सिस्टम पर ज़िप फ़ाइलों का नाम एन्कोडिंग सबसे अधिक संभावना है कि जब आप उन्हें एक उचित सपोर्टिंग फाइलसिस्टम में कॉपी करते हैं, तो उन्हें बदलने या तय करने की संभावना नहीं होती है, लेकिन जब विघटित हो तो उपनिर्देशिका ठीक होनी चाहिए।


0

पहले ध्यान दें कि चरित्र एन्कोडिंग नरक का अपना खंड है। विंडोज की दुनिया में अभी भी UTF-8 और M $ के बीच एक गंदा द्वैतवाद मौजूद है, जो लंबे समय से बेवकूफ बना रहा है और ISO-8859 (जो इसके साथ आया था) पर जोर दे रहा है। जैसा कि ऊपर उल्लेख किया गया है कि फाइल सिस्टम के साथ लगभग निश्चित रूप से कुछ करना है। मेरा समाधान एक तकनीकी नहीं है, लेकिन एक है जिसने मेरे लिए कई वर्षों तक काम किया है:

फ़ाइल नामों के लिए मेरी व्यक्तिगत बिट हमेशा एक जैसी होती है: अल्फ़ान्यूमेरिक्स प्लस डैश (-) और अंडरस्कोर (_) के साथ बस स्टिक। Umlaute को ae, ue और oe के रूप में लिखें। रिक्त स्थान और अन्य विशेष वर्णों का उपयोग न करें। यह पहली बार में थोड़ा असुविधाजनक है, लेकिन यह आपको अप्रत्याशित स्थानों में बहुत दर्द से बचाएगा।

एक साइड नोट के रूप में: हाँ यह एक बुरा "हैक" की तरह है, लेकिन यदि आप क्रॉस प्लेटफॉर्म पर काम करते हैं तो आपको अक्सर अंतिम सामान्य हर में वापस आना पड़ता है। आप इसे इस बात के लिए समझ लेंगे कि चरित्र एन्कोडिंग की तरह कुछ बुनियादी एक कठिन मानक होगा, लेकिन यह निकलता है कि मानकों को प्राप्त करना एक कठिन बात है। यह XKCD इसे काफी अच्छी तरह से समिट करता है


जब मैं मैक (विंडोज) और लिनक्स के बीच (सिंकिंग के माध्यम से) फाइल को सिंक करने की कोशिश करता हूं (और असफल होता हूं) फ़ाइल नामों में एन्कोडिंग समस्याओं से मैं बीमार और थका हुआ हूं। मैं आपकी सलाह को अनुकूलित करूंगा, हालांकि तुर्की में ç, ş, ı, ğ, ü, ö, अल्फ़ान्यूमेरिक्स के साथ लिखने के लिए सुविधाजनक नहीं हैं। मैं क्लाउड स्टोरेज का उपयोग करने से बचना चाहता हूं लेकिन यह समस्या मुझे ऐसा करने के लिए मजबूर करती है।
Teo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.