बलवा के साथ कन्वर्सेशन कैसे करें


2

मेरे पास विंडोज़ -१२१ एन्कोडिंग में फ़ाइलनाम के साथ बहुत सारी फाइलें हैं। मैं इसे utf8 में बदलना चाहता था। लेकिन मैंने गलती से इसे गलती से कन्विंस कर लिया है:

convmv -r - एनोटेस्ट-ऑफ विंडो -1255 -t utf8 *

इसलिए अब मुझे इसे utf8 से windows-1255 में फिर से windows-1251 से utf8 में बदलने की जरूरत है, लेकिन convmv ऐसा नहीं करना चाहता:

convmv --notest -f utf8 -t windows-1255 זטחם�.docx
cp1255 doesn't cover all needed characters for: "./זטחם�.docx"
To prevent damage to your files, we won't continue.
First fix this or correct options!

क्या --forceकनवल्शन के लिए कोई विकल्प है? बिना कनवल्शन के मैं अपनी फ़ाइल का नाम कैसे तय कर सकता हूँ?

यहाँ फ़ाइल उदाहरण http://fbe.am/l8O है


पढ़ें इस विकल्प --nosmart : आदमी पेज में j3e.de/linux/convmv/man/#nosmart
stderr

@TiagoCa धन्यवाद, लेकिन यह मदद नहीं की है।
फ्रीमैनॉयड

क्या आप कहीं एक उदाहरण फ़ाइल पोस्ट कर सकते हैं ताकि हम इसे आज़मा सकें?
टेराडॉन

हाँ यहाँ fbe.am/l2N है
freemanoid

1
क्या आप फ़ाइल को .zip के रूप में अपलोड कर सकते हैं? नाम זטחם�डाउनलोड होने पर HTML एस्केप ( .docx) में परिवर्तित हो जाता है ।
टेराडॉन

जवाबों:


2

यह एक अच्छा विचार नहीं है

यह convmvकेवल एक सरल पर्ल स्क्रिप्ट है, इसलिए कोड को संपादित करना काफी आसान है। यदि परीक्षण के परिणामों को अनदेखा करने और जारी रखने के लिए यह कहकर, मैं कुछ करने में सक्षम था, तो यह बाहर निकलने के लिए निर्धारित है।

../convmv.modified.pl --notest -f utf8 -t windows-1255 זטחם�.docx 
Your Perl version has fleas #37757 #49830 
cp1255 doesn't cover all needed characters for: "./זטחם�.docx"
mv "./זטחם�.docx"   "./����"
Ready!

इसने एक फ़ाइल बनाई ????, जिसे मैं तब उपयोग कर सकता था, जो convmvअपने एन्कोडिंग को बदलने के लिए utf8 में बदल सकती थी ( findइसलिए उपयोग करना था क्योंकि मैं ????एक फ़ाइल के रूप में नहीं दे सकता था ):

find . -type f -exec convmv --notest -f windows-1255 -t utf8 {} \;

$ find . -type f -exec convmv --notest -f windows-1255 -t utf8 {} \;
Your Perl version has fleas #37757 #49830 
mv "./����" "./זטחם"
Ready!

फिर मैंने docxएक्सटेंशन ( mv זטחם זטחם.docx) जोड़ने के लिए फ़ाइल का नाम बदल दिया और फ़ाइल को libre office में खोल सकता था।


यह एक बुरा विचार है क्योंकि मैंने उस समस्या को हल नहीं किया है जो convmvआपकी फ़ाइलों को सही ढंग से परिवर्तित करने से रोकती है, मैंने बस इसे अनदेखा कर दिया है। मुझे लगता है कि समस्या यह है कि आपके पहले, गलत रूपांतरण ने फ़ाइल नाम में अजीब अक्षर जोड़े जो convmvपता नहीं है कि कैसे निपटना है। मैं इसकी गारंटी नहीं दे सकता (या यहां तक ​​कि इस पर एक राय भी प्रस्तुत कर सकता हूं) कि यह आपकी फाइलों को नुकसान नहीं पहुंचाएगा। मेरा सुझाव है कि आप इसे पहले एक फ़ाइल पर आज़माएँ और देखें कि क्या यह वास्तव में काम करता है।

दूसरी समस्या यह है कि मैं फाइल के नाम की उसी वर्णमाला में होने की उम्मीद कर रहा था जैसा कि फ़ाइल के पाठ में है और यह नहीं है (मुझे लगता है), इसलिए पूरा ऑपरेशन शायद विफल हो गया। चूंकि मैं प्रश्न में वर्णमाला नहीं पढ़ सकता हूं इसलिए मुझे यकीन नहीं हो सकता है।

वैसे भी, यदि आप इसे आज़माना चाहते हैं, तो आपको निम्नलिखित बदलाव करने होंगे /usr/bin/convmv:

  1. टिप्पणी लाइन 359, इसे बदलें:

    die "To prevent damage to your files, we won't continue.\nFirst fix errors or correct options!\n" if ($errors_occurred);
    

    इसके लिए:

    #die "To prevent damage to your files, we won't continue.\nFirst fix errors or correct options!\n" if ($errors_occurred);
    
  2. और इसे बदलें (लाइन 460):

    from_to($newname, $opt_f, $opt_t, Encode::FB_QUIET) or die "SHOULD NOT HAPPEN HERE: conversion error, so suitable charset used?: \"$oldfile\"\nTo prevent damage to your files, we won't continue. First fix this!\n";
    

    इसके लिए:

    from_to($newname, $opt_f, $opt_t, Encode::FB_QUIET);
    

यदि फ़ाइल नाम से v वर्णों को हटा दें तो कनवम् अच्छा काम करता है।
फ्रीमैनॉइड

1
@freemanoid हां, लेकिन मुझे लगता है कि th soemthig का प्रतिनिधित्व करता है जिसे आप खोना नहीं चाहते हैं, अगर केवल यही समस्या है, तो आप उन्हें इस आदेश के साथ हटा सकते हैं:find . -name "*�*" -exec rename 's/�//g' '{}' \;
terdon

मैं वास्तव में अधिक स्वच्छ समाधान करना चाहता हूं। धन्यवाद।
फ्रीमैनॉइड

1
@freemanoid हाँ, जैसा कि मैंने कहा, यह एक अच्छा समाधान नहीं है। हालाँकि, समस्या यह है कि जब से आपने फ़ाइलों का नाम बदला है, आपने शायद कुछ जानकारी खो दी है। मुझे नहीं लगता कि आप इससे बेहतर कर पाएंगे ...
टेराडॉन

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