পাঠ্য ফাইল থেকে কীভাবে ইউটিএফ -8 অক্ষর মুছে ফেলা যায়


86

আমার কাছে আরবি, ইংলিশ, রাশিয়ান ফাইলগুলির একটি গুচ্ছ রয়েছে যা ইউটিএফ -8 এ এনকোড করা আছে। পার্ল স্ক্রিপ্ট ব্যবহার করে এই ফাইলগুলি প্রক্রিয়া করার চেষ্টা করছি, আমি এই ত্রুটিটি পেয়েছি:

Malformed UTF-8 character (fatal)

এই ফাইলগুলির বিষয়বস্তুটি ম্যানুয়ালি পরীক্ষা করে দেখলাম, এগুলিতে আমি কিছু অদ্ভুত অক্ষর পেয়েছি। এখন আমি ফাইলগুলি থেকে এই অক্ষরগুলি স্বয়ংক্রিয়ভাবে সরানোর জন্য একটি উপায় খুঁজছি।

এটা করতে কোন উপায় আছে কি?


4
সম্ভবত এটি এর সমতুল্য
প্রশ্নগুলি

4
অনুগ্রহ করে এই লিঙ্কটি দেখুন: unix.stackexchange.com/questions/6516/filtering-in
अवैध-

4
ইউটিএফ -8 অক্ষর কী? একটি সুগঠিত ইউটিএফ -8 স্ট্রিংয়ের সমস্ত অক্ষর হ'ল ইউটিএফ -8 (আসলে ইউনিকোড) অক্ষর! এর মধ্যে কয়েকটি ইউটিএফ -8 একটানা কয়েকটি বাইটে এনকোড করা হয়েছে ....
বেসাইল স্টারিনকিভিচ

4
@ বেসাইলস্টারিঙ্কেভিচ: ত্রুটি বার্তায় পরিষ্কারভাবে বলা হয়েছে যে একটি বিকৃত UTF-8 অক্ষর রয়েছে character এর অর্থ একটি বাইট উপস্থিত হয়েছিল যা কোনও বৈধ UTF-8 ফাইলের অংশ হিসাবে উপস্থিত হতে পারে না। এটা কঠিন নয়; এটি 0xC0 বা 0xC1 বাইট, বা 0xF5..0xFF, বা বাইটগুলির সাথে সিকোয়েন্সিং সমস্যা হতে পারে যা অন্যথায় বৈধ হবে।
জনাথন লেফলার

উত্তর:


159

এই আদেশ:

iconv -f utf-8 -t utf-8 -c file.txt

সমস্ত অবৈধ অক্ষরকে এড়িয়ে আপনার UTF-8 ফাইলটি সাফ করবে।

-f is the source format
-t the target format
-c skips any invalid sequence

11
একটি ম্যাকের "আইকনভি -f utf-8 -t utf-8 -c file.txt"। 'চ' এবং '8' এর মধ্যে হাইফেন
কলিন

4
সুবিধামত আপনি এমনটি ম্যাক ক্লিপবোর্ড বিষয়বস্তু রুপান্তর করতে পারেন: pbpaste | iconv -f utf-8 -t -utf-8 -c | pbcopy। আমি লক্ষ্যবস্তু করে সমস্ত বিশেষ অক্ষর কেড়ে নেওয়ার জন্য একটি বিশ্বব্যাপী শর্টকাট সহ একটি আলফ্রেড ওয়ার্কফ্লোও তৈরি করেছি ascii
লেনার হোয়েট

4
এটি এমন একটি ফাইল তৈরি করেছিল যা আমার জন্য সম্পূর্ণ ফাঁকা ছিল। এটি সবাইকে জানাতে চান এটি সম্ভাব্য ধ্বংসাত্মক এবং এটি চালানোর আগে তাদের ফাইলটির ব্যাকআপ নিতে।
কাউন্টারিং

4
iconv -f utf-8 -t ascii//TRANSLITআমার সমস্যা সমাধান এটি কোঁকড়ানো উদ্ধৃতিগুলি সোজা উদ্ধৃতিতে রূপান্তর করে।
কর্নেল আতঙ্ক

4
-oবিভিন্ন আউটপুট ফাইলের জন্য
কোডডামোক

0

আপনার পদ্ধতিটি অবশ্যই বাইট দ্বারা বাইটটি পড়তে হবে এবং অক্ষরগুলির বাইট অনুসারে নির্মাণের সম্পূর্ণ বোঝা এবং প্রশংসা করতে হবে। সবচেয়ে সহজ পদ্ধতিটি এমন কোনও সম্পাদক ব্যবহার করা যা কেবলমাত্র ইউটিএফ -8 অক্ষরের আউটপুট ছাড়া কিছু পড়বে anything টেক্সটপ্যাড একটি পছন্দ।


আইকনভি সাইগউইনে উপলভ্য নয়। উইন্ডোজ / সাইগউইনে এটি করার কোনও উপায় আছে কি? আমার কাছে একটি বড় (100000+ লাইন) এক্সএমএল ফাইল রয়েছে যাতে অবৈধ অক্ষরগুলি ছড়িয়ে দিতে হবে। আমি বৈধ utf-8 সম্পর্কে চিন্তা করি না। আমি নোটপ্যাড ++ কে আউট -8 এ সেট করেছি, তবে সেখান থেকে সংরক্ষণ করার পরেও আমি এখনও এক্সএমএল পার্সারে ত্রুটি
পেয়েছি

উইন্ডোতে উবুন্টু ডাব্লুএসএল এটি আইকনভের সাথে আসে
ক্যাট লিম রুইজ

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