আমি কীভাবে হিব্রু নামগুলির সাথে ফাইলগুলির একটি জিপ সংরক্ষণাগারটি সঠিকভাবে সঙ্কুচিত করতে পারি?


18

কেউ আমাকে হিব্রু নামের ফাইলযুক্ত একটি জিপ ফাইল পাঠিয়েছেন (এবং উইন্ডোজে তৈরি করা হয়েছে, কোন সরঞ্জামের সাথে নিশ্চিত নয়)। আমি ডেবিয়ান স্ট্রেচে এলএক্সডিই ব্যবহার করি। জিনোম সংরক্ষণাগার ব্যবস্থাপক ফাইলটি আনজিপ করার ব্যবস্থা করে তবে হিব্রু অক্ষরগুলি ভরাট হয়ে যায়। আমি মনে করি আমি ইউটিএফ -8 অক্টেটগুলি ইউনিকোড অক্ষরগুলিতে প্রসারিত করছি, উদাহরণস্বরূপ আমার কাছে এমন একটি ফাইল রয়েছে যার নামটিতে চারটি অক্ষর এবং একটি .ডোক পর্যাপ্ত রয়েছে, এবং অক্ষরগুলি হ'ল: 0x008E 0x0087 0x008E 0x0085। কমান্ড-লাইন আনজিপ ইউটিলিটি ব্যবহার করা আরও খারাপ - এটি "অবৈধ বা অসম্পূর্ণ মাল্টিবাইট বা প্রশস্ত চরিত্র" সম্পর্কে অভিযোগ করে সম্পূর্ণরূপে সংক্ষেপণ করতে অস্বীকার করে।

সুতরাং, আমার প্রশ্নগুলি হ'ল:

  • এখানে আরও একটি ডিকম্প্রেশন ইউটিলিটি রয়েছে যা সঠিক ফাইলগুলি দিয়ে আমার ফাইলগুলিকে সংক্রামিত করবে?
  • ফাইলটি সংকুচিত করার পথে কিছু ভুল আছে, বা এটি কেবল জিপ বাস্তবায়নের অসঙ্গতি? অথবা লিনাক্স জিপ ইউটিলিটিগুলিরও ভুল / বাগ?
  • গারবেলগুলি ব্যবহার করে সংকোচনের পরে সঠিক ফাইলের নামগুলি পেতে আমি কী করতে পারি?

আপনি যদি cp862 টেবিলের এই বাইটগুলি সন্ধান করেন তবে ফাইলের নামটি কি আপনার প্রত্যাশার সাথে মিলছে? অন্যথায়, আপনি কি সোর্স মেশিনের নেটিভ এনকোডিং জানেন?
মাইকেল হোমার 20

সিপি 1255 , এবং অন্য কোনও প্রশংসনীয় এনকোডিংয়ের জন্য ডিট্টো ; এটি ঠিক কী দেখায় তার ভিত্তিতে এটি কাজ করা সম্ভব।
মাইকেল হোমার 20

@ মিশেলহোমর: না, এটি দেখতে মিলে যায় বলে মনে হয় না। আপনি হিব্রু-ইস্রায়েলে আঞ্চলিক সেটিংস সেট করার সময় এমএস উইন্ডোজ যা ব্যবহার করে সোর্স মেশিনের নেটিভ এনকোডিং, তাই আমি অনুমান করি এটি কখনও কখনও ইউটিএফ -8 এবং কখনও কখনও সিপি 1255 হয়।
einpoklum

উত্তর:


15

মনে হচ্ছে ফাইলগুলির নামগুলি উইন্ডোজের মালিকানাধীন কোডপেজগুলির একটিতে ( সিপি 862 , 1255 , ইত্যাদি) এনকোড করা আছে ।

  • এখানে আরও একটি ডিকম্প্রেশন ইউটিলিটি রয়েছে যা সঠিক ফাইলগুলি দিয়ে আমার ফাইলগুলিকে সংক্রামিত করবে? আমি একটি জিপ ইউটিলিটি সম্পর্কে অবগত নই যা এই কোড পৃষ্ঠাগুলিকে স্থানীয়ভাবে সমর্থন করে। 7 জনের এনকোডিংগুলি সম্পর্কে কিছুটা বোঝাপড়া রয়েছে তবে আমি বিশ্বাস করি এটি আপনার সিস্টেমকে এমন একটি এনকোডিং হতে হবে যা সাধারণত সাধারণভাবে সম্পর্কে জানতে পারে (আপনি LANGপরিবেশের পরিবর্তনশীল সেট করে এটি বেছে নিয়েছেন ) এবং উইন্ডোজ কোডপেজ সম্ভবত সেগুলির মধ্যে নয়।

    unzip -UUতাদের নামের সঠিক বাইটগুলি (সমস্ত ইউনিকোড সমর্থন অক্ষম করে) ফাইল তৈরি করতে কমান্ড লাইন থেকে কাজ করা উচিত। এটি ইতিমধ্যে আপনি জিনোমের সরঞ্জাম থেকে পেয়েছেন এমন প্রভাব। এনকোডিংটি কোনওভাবেই ঠিক হবে না তবে আমরা এটি নীচে ঠিক করতে পারি।

  • ফাইলটি সংকুচিত করার পথে কিছু ভুল আছে, বা এটি কেবল জিপ বাস্তবায়নের অসঙ্গতি? অথবা লিনাক্স জিপ ইউটিলিটিগুলিরও ভুল / বাগ? আপনার দেওয়া ফাইলটি বহনযোগ্যভাবে তৈরি করা হয়নি। এটি অভ্যন্তরীণ ব্যবহারের জন্য অগত্যা ভুল হবে না যেখানে এনকোডিংটি স্থির করা হয়েছে এবং আগে থেকেই জানা ছিল, যদিও ফর্ম্যাট স্পেসিফিকেশন বলছে যে নামগুলি ইউটিএফ -8 বা সিপি 437 হয় না এবং আপনার কোনওটিই নয়। এমনকি উইন্ডোজ মেশিনগুলির মধ্যেও, বিভিন্ন কোডপেজ ব্যবহার করা ভাল কাজ করে না, তবে উইন্ডোজবিহীন মেশিনগুলির সাথে এই কোড পৃষ্ঠাগুলির কোনও ধারণা নেই। বেশিরভাগ সরঞ্জামগুলি ইউটিএফ -8 তাদের ফাইলের নামগুলি এনকোড করে (যা এখনও সমস্যা এড়াতে পর্যাপ্ত নয়) isn't

  • গারলেডগুলি ব্যবহার করে সংকোচনের পরে সঠিক ফাইলের নামগুলি পেতে আমি কী করতে পারি? আপনি যদি ফাইলের নামগুলির এনকোডিং সনাক্ত করতে পারেন তবে আপনি বিদ্যমান নামগুলিতে থাকা বাইটগুলি ইউটিএফ -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 {} \;
    

    বর্তমান ডিরেক্টরিটির নীচে সমস্ত ফাইল সন্ধান করবে এবং নামগুলি ইউটিএফ -8 এ রূপান্তর করার চেষ্টা করবে।

    উভয় ক্ষেত্রেই, আপনি বিভিন্ন এনকোডিংগুলির সাথে পরীক্ষা করতে পারেন এবং এটি বোঝার জন্য একটি আবিষ্কার করার চেষ্টা করতে পারেন।


আপনার জন্য এনকোডিং স্থির করার পরে, আপনি যদি এই ফাইলগুলি অন্য দিকে ফেরত পাঠাতে চান তবে আপনার অন্য প্রান্তেও একই সমস্যা হতে পারে। সেক্ষেত্রে ফাইলগুলি জিপ করার আগে আপনি প্রক্রিয়াটি বিপরীত করতে পারেন -UU, যেহেতু উইন্ডোজ প্রান্তে এটি ঠিক করা খুব কঠিন হতে পারে।


আমি মনে করি এটি করতে হবে যেহেতু আমি যে জিপ ফাইলটি সন্ধান করছিলাম এখন তা অপ্রাসঙ্গিক কারণগুলির জন্য চলে গেছে। ধন্যবাদ, পরের বার এটি করবে এবং সেরা আশা করি।
einpoklum

1
rarবা p7zip.zip সংরক্ষণাগার পরিচালনা করতে অস্বীকার করুন। লিনাক্সের মালিকানাধীন এনকোডিংগুলিতে ফাইলের নাম সহ কোনও সংরক্ষণাগার তোলার কী উপায় আছে? যখন আমি এর সাথে এক্সট্রাক্ট করি তখন আমি unzipএকটি ত্রুটি পাই: "ত্রুটি: ╨и╨╕╨┐ / শিপ_╨п ╨Я╤А╨╛╤З╨╗╨░ ╨Я╤А╨╛ ╨н╤В╨╛ create তৈরি করতে পারে না Name ╨Ъ╨╜╨╕╨╢╨║╨╡! .Png ফাইলের নাম খুব দীর্ঘ "
নিকোলাই লেসচভ

আমি .zip ফাইলটি সঠিকভাবে বের করতে সক্ষম হয়েছি LANG=ru_RU.CP1251; unzip Bleed.zip(এটি আমার ক্ষেত্রে সিরিলিক এনকোডিং ছিল)। এখন আমি ভাবছি কীভাবে আমি আমার সিস্টেম সেট আপ করব যাতে আমি ডিফল্টরূপে জিইউআইতে এই জাতীয় .zip ফাইলগুলি সঠিকভাবে খুলতে পারি?
নিকোলাই লেসচভ

@ নিকোলাইলিছভ একটি প্রশ্ন জিজ্ঞাসা করুন এবং কেউ আপনাকে সহায়তা করতে সক্ষম হতে পারে। আপনাকে সম্ভবত আপনার সিস্টেম সম্পর্কে আরও তথ্য সরবরাহ করতে হবে।
মাইকেল হোমার

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

@ বারুইইক, আমি ফাইলের নাম হিসাবে ইউনিকোড নম্বরগুলি আনজিপড করেছিলাম (# ইউ + 0040 # ইউ + 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*পরিবেশের ভেরিয়েবলগুলি কোনও ভাল করতে পারেনি।


আমি পরের বার চেষ্টা করব আমার কাছে এমন একটি জিপ ফাইল বের করার জন্য ... ধন্যবাদ। তবে - আপনি কি আপনার স্ক্রিপ্টটি পরিবর্তন করতে পারবেন: ১. দুটি আর্গুমেন্ট রয়েছে কিনা তা পরীক্ষা করে দেখুন ২. কেবলমাত্র জিপ ফাইল সরবরাহ করা থাকলে বর্তমান ওয়ার্কিং ডিরেক্টরিতে নিষ্কাশন করুন?
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

কেবল কনফটিভ এবং কমান্ড-লাইন 7 জিপ সরঞ্জামের জন্য +1।
einpoklum

সম্ভবত একটিতে LANGভেরিয়েবলের জন্য এবং হাতের ফাইলের উপর নির্ভর করে এনকোডিং থেকে বিভিন্ন বিকল্পের চেষ্টা করতে হবে। আমি কাজ করেছি যেখানে LANG=ru_RU.CP1251একত্রে একটি ফাইল পেয়েছি -f cp866
দিমিত্রি চুবারভ

0

আমার লিনাক্সে কমান্ড জিপ সংরক্ষণাগার রয়েছে (কমান্ড লাইন থেকে) এবং ডায়াক্রিটিক্স অক্ষরযুক্ত ফাইলের নামগুলি উইন্ডোজটিতে সঠিকভাবে সঙ্কুচিত হয় না, তবে আমি সফলভাবে এটিকে ব্যান্ডজিপ সফ্টওয়্যার দিয়ে খুলেছি যা সরঞ্জামদণ্ডে অক্ষর সেট করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.