गैर-आईएसओ विस्तारित-एएससीआईआई पाठ से एन्कोडिंग को कैसे बदलें, सीआरएलएफ लाइन टर्मिनेटरों के साथ यूटीएफ -8 में?


21

मेरे पास एक txt फाइल है:

$ file -i x.txt
x.txt: text/plain; charset=unknown-8bit
$ file x.txt 
x.txt: Non-ISO extended-ASCII text, with CRLF line terminators

और कुछ पात्र हैं जो गलत तरीके से एन्कोड किए गए हैं:

trwa³y, sta³y, usuwaæ

मैं इस फ़ाइल के एन्कोडिंग को UTF-8 में कैसे बदल सकता हूँ? मैंने अब तक निम्नलिखित तरीके आज़माए हैं:

$ iconv -f ASCII -t UTF-8 x.txt
                puiconv: illegal input sequence at position 4

हो सकता है कि मैं किसी तरह उपयोग करूँ extended ASCII( high ASCII), लेकिन इसे iconvएन्कोडिंग सूची में नहीं पा सकता हूँ ।


2
क्या आप फ़ाइल को कहीं अपलोड कर सकते हैं?
जानोस

8-बिट आईएसओ एनकोडिंग की एक आसान सूची है, सभी को साथ-साथ दिखाया गया है । क्या उनमें से कोई भी आपकी फ़ाइल में आपके द्वारा देखे जाने के करीब है? उदाहरण के लिए, यदि आपको लगता है कि "sta ,y" को "स्टेसी" होना चाहिए, तो उस शब्द में जो भी विषम हेक्स कोड है, उसके लिए एन्कोडिंग में "c" है।
John1024

संभवतः 90% समय में, "नॉन-आईएसओ एक्सटेंडेड-एएससीआईआई टेक्स्ट" विंडोज 1252 कोडपेज में एनकोडेड एक फाइल होगी । "यह संभवतः दुनिया में सबसे अधिक इस्तेमाल किया जाने वाला 8-बिट कैरेक्टर एन्कोडिंग है।" (विकिपीडिया)। इसे पहले आज़माएं:iconv -f windows-1252 -t utf-8 file
nyov

जवाबों:


33

file आपको "गैर-आईएसओ विस्तारित-एएससीआईआई पाठ" बताता है क्योंकि यह पता लगाता है कि यह है:

  • नियंत्रण रेखाओं (बाइट मान 0–31) की कमी के कारण लाइन ब्रेक के अलावा "टेक्स्ट" फ़ाइल की सबसे अधिक संभावना है;
  • "विस्तारित- ASCII" क्योंकि ASCII रेंज के बाहर वर्ण हैं (बाइट मान AS128);
  • "नॉन-आईएसओ" क्योंकि 128-159 रेंज ( आईएसओ 8859 रिजर्व कंट्रोल कैरेक्टर्स के लिए इस रेंज में) वर्ण हैं।

आपको यह पता लगाना होगा कि यह फाइल किस एन्कोडिंग में लगती है। आप एन्का की स्वचालित पहचान की कोशिश कर सकते हैं । पाठ को किस भाषा में है, यह बताकर आपको इसे सही दिशा में प्रस्तुत करना होगा।

enca x.txt
enca -L polish x.txt

फ़ाइल को परिवर्तित करने के लिए, -xविकल्प पास करें :enca -L polish x.txt -x utf8 >x.utf8.txt

यदि आप Enca का उपयोग नहीं कर सकते हैं या नहीं करना चाहते हैं, तो आप मैन्युअल रूप से एन्कोडिंग का अनुमान लगा सकते हैं। चारों ओर देखने के एक बिट ने मुझे बताया कि यह पोलिश पाठ है और शब्द ट्रावेल, स्टैले, यूयूवा हैं, इसलिए हम एक अनुवाद की तलाश कर रहे हैं जहां ³łऔर æż। की तरह यह दिखता है लैटिन -2 या लैटिन-10 या अधिक होने की संभावना (दिए गए "गैर आईएसओ" CP1250 जो आप कर रहे हैं को देखने के रूप में latin1 । UTF-8 में फ़ाइल बदलने के लिए, आप उपयोग कर सकते हैं recode या iconv

recode CP1250..utf8 <x.txt >x.utf8.txt
iconv -f CP1250 -t UTF-8 <x.txt >x.utf8.txt

मैं के साथ हिस्सा नहीं मिलता है < x.txt > x.utf8.txtक्यों हम प्रयोग करते हैं <तो और >? यह कैसे काम करता है?
फ़िलिप बार्टुज़ि


1

टेक्स्ट फ़ाइल को gedit के साथ खोलें और "इस रूप में सहेजें .." संवाद में आप वर्तमान एन्कोडिंग देखेंगे।


0

क्या आपने यह पता लगाने की कोशिश की कि सही कूटबन्धन x.txt क्या है? आपको समर्थित एन्कोडिंग की एक सूची मिलेगी

iconv - सूची

कभी-कभी मेरे साथ ऐसा होता है कि मुझे latin1 और utf8 के बीच एक मिसमैच मिलता है। फिर यह अक्सर इसे utf8 और इसके विपरीत से वापस बदलने में मदद करता है।


0

मैंने enca लाइब्रेरी का उपयोग करके एक स्वचालित रूपांतरण स्क्रिप्ट बनाई है , मैं इसका उपयोग उपशीर्षक को UTF-8 में परिवर्तित करने के लिए अपने NAS पर करता हूं लेकिन इसका उपयोग किसी भी स्वचालित रूपांतरण के लिए किया जा सकता है

बेझिझक प्रयोग करें :)

संपादित करें:

#!/bin/bash
LANGUAGE=czech
TO=utf8
CONVERT="enca -L $LANGUAGE -x $TO"

# Find and onvert
find ./ -type f -name "*.srt" | while read fn; do
  IS_TARGET=`enca "${fn}" | egrep -ow -m 1 'UTF-8|Unrecognized|KOI8-CS2|7bit ASCII|UCS-2|Macintosh Central European'`

    if [ "$IS_TARGET" != "UTF-8" ] &&
       [ "$IS_TARGET" != "UCS-2" ] &&
       [ "$IS_TARGET" != "Macintosh Central European" ] &&
       [ "$IS_TARGET" != "Unrecognized" ] &&
       [ "$IS_TARGET" != "7bit ASCII" ] &&
       [ "$IS_TARGET" != "KOI8-CS2" ]; then

        echo "${fn} ---- Will be converted!"
    # optional backup of original srt
        # cp "${fn}" "${fn}.bak"
        $CONVERT "${fn}"
    fi  

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