मैं हिब्रू नामों के साथ फ़ाइलों के ज़िप संग्रह को सही ढंग से कैसे अस्वीकृत कर सकता हूं?


18

किसी ने मुझे एक ज़िप फ़ाइल दी जिसमें हिब्रू नाम वाली फाइलें थीं (और विंडोज पर बनाई गई थीं, यह सुनिश्चित नहीं है कि किस उपकरण के साथ है)। मैं डेबियन स्ट्रेच पर LXDE का उपयोग करता हूं। सूक्ति संग्रह प्रबंधक फ़ाइल को अनज़िप करने का प्रबंधन करता है, लेकिन हिब्रू वर्णों को उलझाया जाता है। मुझे लगता है कि मैं यूटीएफ -8 ओकटेट को यूनिकोड वर्णों में विस्तारित कर रहा हूं, उदाहरण के लिए मेरे पास एक फ़ाइल है, जिसके नाम में चार अक्षर और एक .doc पर्याप्त है, और वर्ण हैं: 0x008E 0x0087 0x008E 0x0085। कमांड-लाइन अनज़िप उपयोगिता का उपयोग करना और भी बुरा है - यह "अमान्य या अपूर्ण मल्टीबीट या विस्तृत चरित्र" के बारे में शिकायत करते हुए, पूरी तरह से विघटित होने से इनकार करता है।

तो, मेरे सवाल हैं:

  • क्या एक और अपघटन उपयोगिता है जो सही नामों के साथ मेरी फ़ाइलों को विघटित करेगी?
  • क्या फ़ाइल को संकुचित करने के तरीके में कुछ गड़बड़ है, या क्या यह ज़िप कार्यान्वयन की एक असंगतता है? या यहां तक ​​कि रेखीय ज़िप उपयोगिताओं की मिसफिट / बग?
  • विकृत लोगों का उपयोग करके विघटित होने के बाद मैं सही फ़ाइल नाम प्राप्त करने के लिए क्या कर सकता हूं?

यदि आप cp862 तालिका में उन बाइट्स को देखते हैं , तो फ़ाइल नाम मैच से क्या उम्मीद करता है? अन्यथा, क्या आप स्रोत मशीन के मूल एन्कोडिंग को जानते हैं?
माइकल होमर

Cp1255 के लिए डिट्टो , और कोई अन्य प्रशंसनीय एनकोडिंग; यह सही लग रहा है के आधार पर इसे बाहर काम करने के लिए संभव हो सकता है।
माइकल होमर

@ मिचेलहोमर: नहीं, ऐसा नहीं लगता कि यह मेल खाता है। स्रोत मशीन का मूल एन्कोडिंग जो कुछ भी एमएस विंडोज उपयोग करता है जब आप हिब्रू-इज़राइल में क्षेत्रीय सेटिंग्स सेट करते हैं, तो मुझे लगता है कि यह कभी-कभी यूटीएफ -8 और कभी-कभी सीपी 1255 है।
einpoklum

जवाबों:


15

ऐसा लगता है कि फ़ाइल नाम विंडोज के मालिकाना कोडपेसेज ( CP862 , 1255 , आदि) में से एक में एन्कोडेड हैं ।

  • क्या एक और अपघटन उपयोगिता है जो सही नामों के साथ मेरी फ़ाइलों को विघटित करेगी? मुझे एक ज़िप उपयोगिता की जानकारी नहीं है जो इन कोड पृष्ठों को मूल रूप से समर्थन करती है। 7z में एनकोडिंग्स की कुछ समझ है, लेकिन मेरा मानना ​​है कि यह एक एन्कोडिंग होना चाहिए जो आपके सिस्टम को अधिक आम तौर पर पता चलता है (आप इसे LANGपर्यावरण चर सेट करके इसे चुनते हैं ) और विंडोज कोडपेज की संभावना उन लोगों में नहीं है।

    unzip -UUउनके नाम में सही बाइट्स (सभी यूनिकोड समर्थन को अक्षम करके) के साथ फाइलें बनाने के लिए कमांड लाइन से काम करना चाहिए। यह संभवत: वह प्रभाव है जो आपको गनोम के उपकरण से पहले ही मिल गया था। एन्कोडिंग किसी भी तरह से सही नहीं होगी, लेकिन हम इसे नीचे ठीक कर सकते हैं।

  • क्या फ़ाइल को संकुचित करने के तरीके में कुछ गड़बड़ है, या क्या यह ज़िप कार्यान्वयन की एक असंगतता है? या यहां तक ​​कि रेखीय ज़िप उपयोगिताओं की मिसफिट / बग? आपके द्वारा दी गई फ़ाइल को आंशिक रूप से नहीं बनाया गया था। यह जरूरी नहीं कि आंतरिक उपयोग के लिए गलत है जहां एन्कोडिंग तय हो गई है और अग्रिम में जानी जाती है, हालांकि प्रारूप विनिर्देश कहता है कि नाम या तो UTF-8 या cp437 होना चाहिए और आपका नहीं है। यहां तक ​​कि विंडोज मशीनों के बीच, अलग-अलग कोडपेज का उपयोग करने से भी अच्छा काम नहीं होता है, लेकिन गैर-विंडोज मशीनों में उन कोड पेजों की कोई अवधारणा नहीं होती है जिन्हें शुरू करना है। अधिकांश उपकरण UTF-8 उनके फ़ाइलनामों को कूटबद्ध करते हैं (जो समस्याओं से बचने के लिए हमेशा पर्याप्त नहीं होते हैं)।

  • विकृत लोगों का उपयोग करके विघटित होने के बाद मैं सही फ़ाइल नाम प्राप्त करने के लिए क्या कर सकता हूं? यदि आप फ़ाइल नाम की एन्कोडिंग की पहचान कर सकते हैं, तो आप मौजूदा नामों में बाइट्स को यूटीएफ -8 में बदल सकते हैं और मौजूदा फ़ाइलों को सही नाम पर स्थानांतरित कर सकते हैं। उपकरण अनिवार्य रूप से एक ही आदेश में है कि इस प्रक्रिया में तेजी लपेटता: परिवर्तित सब कुछ अंदर करने की कोशिश करेंगे cp862 से UTF-8 में।convmvconvmv -f cp862 -t utf8 -r ..

    वैकल्पिक रूप से, आप उपयोग कर सकते हैं iconvऔर findसब कुछ उनके सही नामों पर स्थानांतरित कर सकते हैं । कुछ इस तरह:

    find -mindepth 1 -exec sh -c 'mv "$1" "$(echo "$1" | iconv -f cp862 -t utf8)"' sh {} \;
    

    वर्तमान निर्देशिका के नीचे सभी फाइलों को ढूंढेंगे और नामों को UTF-8 में बदलने का प्रयास करेंगे।

    या तो मामले में, आप विभिन्न एन्कोडिंग के साथ प्रयोग कर सकते हैं और एक को खोजने की कोशिश कर सकते हैं जो समझ में आता है।


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


मुझे लगता है कि यह करना होगा क्योंकि जिस ज़िप फ़ाइल को मैं देख रहा था वह अब यहाँ के लिए अप्रासंगिक है। धन्यवाद, अगली बार ऐसा करेंगे और सर्वश्रेष्ठ के लिए आशा करेंगे।
einpoklum

1
rarया p7zip.zip अभिलेखागार को संभालने के लिए मना कर दिया। क्या लिनक्स पर मालिकाना एन्कोडिंग में फ़ाइलनाम के साथ एक संग्रह निकालने का एक तरीका है? जब मैं साथ unzipनिकालता हूं, मुझे एक त्रुटि मिलती है: "त्रुटि: ╨╕╨┐и Ship / Ship_╨п ╨Я╤А╨╛ ╨А╤ ╨Я╤н╤В╨╛ ╨ नहीं बना सकता Name "! .Png फ़ाइल का नाम बहुत लंबा है"
निकोलई लेसचोव

मैं सही तरीके से .zip फ़ाइल को निकालने में कामयाब रहा LANG=ru_RU.CP1251; unzip Bleed.zip(यह मेरे मामले में साइरिलिक एन्कोडिंग था)। अब मुझे आश्चर्य है कि मैं अपना सिस्टम कैसे सेट करूं ताकि मैं सही तरीके से ऐसी .zip फाइलों को डिफ़ॉल्ट रूप से खोल सकूं?
निकोलाई लेसचोव

@NickolaiLeschov एक प्रश्न पूछें और कोई आपकी मदद करने में सक्षम हो सकता है। आपको संभवतः अपने सिस्टम के बारे में अधिक जानकारी प्रदान करनी होगी।
माइकल होमर

unzip -UU foo.zipतुर्की पात्रों के लिए काम किया
मर्ट एस। कपलान

8

मुझे कमांड के साथ सफलता मिली 7z x <source.zip>

संस्करण:

p7zip Version 16.02 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,[...])

संभावित रूप से प्रासंगिक वातावरण:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
LC_CTYPE=UTF-8

यह उनके फ़ाइलनाम में 8-बिट पात्रों के साथ सभी फ़ाइलों को विघटित करने में सक्षम था, इनमें से कुछ अक्षर फिसल गए, कुछ विकृत हो गए।


p7zip केवल एक ही है जिसने मेरे लिए काम किया है
alex88

6

मेरे पास बस यही समस्या है, और यह पता चला है कि मेरा संस्करण unzipउबंटू रिपॉजिटरी ( UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.) से उपलब्ध है यदि आप -aस्विच निर्दिष्ट करते हैं, तो फ़ाइल नाम के स्वचालित डिकोडिंग को संभाल सकते हैं ।

unzip -a stupid.zip

+1 हालांकि मेरे पास अभी इसका परीक्षण करने के लिए कुछ भी नहीं है।
einpoklum

1
मैन ऑफ द पेज के अनुसार स्विच पाठ फ़ाइलों को परिवर्तित करने का ख्याल रखता है। नाम दर्ज नहीं। unzip-a
बेरिक

@beruic, मैंने फ़ाइल नामों (# U + 0040 # U + 0050 ...) के रूप में यूनिकोड संख्याओं को हटा दिया था, और फिर "अनज़िप-ए" ने वास्तव में मदद की।
चांग झाँओ

1
मैंने कुछ मंगा पर यह कोशिश की। फ़ाइल नाम सही ढंग से डिकोड किए गए थे, लेकिन छवियों को पाठ (!) के रूप में भी व्याख्या किया गया था और पूरी तरह से दूषित किया गया था। यहां तक ​​कि यह जिप और आरएआर फाइलों को पाठ के रूप में संग्रह के अंदर व्याख्या करता है, यह पता लगाना पूरी तरह से बेकार है।
rjh

2

मुझे सिरिलिक पात्रों के साथ ज़िप संग्रह को डिकोड करने के साथ एक समान समस्या थी। एक पंक्ति अजगर स्क्रिप्ट ने ठीक से काम किया:

#!/usr/bin/python

import zipfile
import sys

zipfile.ZipFile(sys.argv[1], 'r').extractall(sys.argv[2] if len(sys.argv) > 2 else '.')

फिर बस फोन करके उसे unzip_encबुला लोunzip_enc ZIP_FILE [TARGET_DIR]

मेरे लिए न तो unzip -UU, unzip -aऔर न ही LANG*वातावरण चर किसी भी अच्छे से किया था।


मैं कोशिश करूँगा कि अगली बार मेरे पास निकालने के लिए इस तरह की ज़िप फ़ाइल हो ... धन्यवाद। लेकिन - क्या आप अपनी स्क्रिप्ट को इस प्रकार बदल सकते हैं: 1. जाँचें कि क्या दो तर्क हैं 2. वर्तमान वर्किंग डाइरेक्टरी में एक्सट्रैक्ट करें यदि केवल ज़िप फाइल उपलब्ध कराई गई है?
einpoklum

2

मुझे इस संयोजन के साथ किस्मत मिली थी:

export LANG=es_MX 
7z x file.zip
convmv -f cp437 -t utf8 -r .

जोड़ना - वास्तविक नाम बदलने के लिए मनाने के लिए नहीं। बाद में मुझे और भी बेहतर वर्जन मिले:

LANG=es_MX.cp437 unzip -UU file.zip
convmv -f cp437 -t utf8 -r . --notest

+1 सिर्फ कंफर्म और कमांड लाइन 7zip टूल के लिए।
einpoklum

शायद एक के लिए विभिन्न विकल्पों की कोशिश करना है LANGचर और से हाथ में फाइल के आधार पर एन्कोडिंग। मुझे एक फाइल मिली है, जहां LANG=ru_RU.CP1251एक साथ -f cp866काम किया है।
दिमित्री चुबरोव

0

मेरे पास लिनक्स (कमांड लाइन से) में संपीड़ित ज़िप आर्काइव है और विंडोज पर डिक्ट्रीटिक्स वर्णों के साथ फाइलनेम सही ढंग से विघटित नहीं हैं, लेकिन मैंने सफलतापूर्वक इसे बैंडिज़िप सॉफ्टवेयर के साथ अनपैक किया जो टूलबार पर चारसेट सेट कर सकता है।

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