উইন্ডোজ 7 কেন ইউনিকোডের সাথে ইউটিএফ -8 এর সাথে নয়?
পরিভাষা
ইউনিকোড এবং ইউটিএফ -8 একই ধরণের জিনিস নয়: ইউনিকোড এমন একটি চরিত্র-সেট যা অক্ষরের একটি সেট (একটি প্রতিলিপি) সংজ্ঞায়িত করে এবং সেই অক্ষরের প্রতিটিটির জন্য সংখ্যা (কোড পয়েন্ট) নির্ধারিত করে। ইউটিএফ ‑ 8 হ'ল কয়েকটি এনকোডিংগুলির মধ্যে একটি যা ডিস্কে বা সংক্রমণে ইউনিকোড অক্ষরগুলির একটি প্রবাহকে উপস্থাপন করতে ব্যবহার করা যেতে পারে । ইউনিকোড অক্ষরের একই স্ট্রিমটিকে ইউটিএফ ‑ 16, ইউটিএফ ‑ 32 বা ইউটিএফ ‑ 7 হিসাবে এনকোড করা যেতে পারে।
যাইহোক, নোটপ্যাড অফার আপনি সহ বিকল্পগুলি "এনকোডিং" ANSI
, Unicode
, Unicode big-endian
এবং UTF-8
। মাইক্রোসফ্ট বিকাশকারী যারা এটি লিখেছেন তারা ভুল পদ ব্যবহার করেছেন। যখন তারা "ইউনিকোড" বলে থাকে তখন তাদের সম্ভবত সম্ভবত " ইউটিএফ -16
লিটল এন্ডিয়ান " অর্থ হয়। যখন তারা "এএনএসআই" বলে তারা কোড পৃষ্ঠা 1252 (সিপি-1252) বোঝায় ।
মাইক্রোসফ্ট নোটপ্যাড
আমি বিশ্বাস করি যে মাইক্রোসফ্টের নোটপ্যাড ইউটিএফ -16 বাইট অর্ডার চিহ্ন ( বিওএম ) দিয়ে লিখেছেন এবং নোটপ্যাড কোনও পাঠ্য ফাইল পড়ার সময় বিওএম-র সন্ধান করে। বিওএম অ্যাপটিকে বলছে যে ফাইলটি ইউটিএফ -১ is এবং এটি বড়-এন্ডিয়ান বা লিটল-এন্ডিয়ান নয় কিনা তা নির্দেশ করে।
নোটপ্যাড যদি বিওএম খুঁজে না পায় তবে এটি একটি লাইব্রেরি ফাংশন কল করে IsTextUnicode
, যা ডেটা দেখায় এবং কী এনকোডিং ব্যবহৃত হয়েছিল তা অনুমান করার চেষ্টা করে। কখনও কখনও (অনিবার্যভাবে) এটি ভুলভাবে অনুমান করে। কখনও কখনও এটি অনুমান করা হয় যে একটি "এএনএসআই" ফাইলটি "ইউনিকোড"। কোড পৃষ্ঠা 1252 হিসাবে কোনও ইউটিএফ -16 বা ইউটিএফ -8 ফাইলটি ব্যাখ্যা করার চেষ্টা করার ফলে এটি ভুল গ্লাইফগুলি প্রদর্শন করতে পারে এবং কিছু 8-বিট মান রেন্ডার করতে গ্লাইফগুলি খুঁজে পেতে অক্ষম হয় - এগুলি স্কোয়ার হিসাবে দেখানো হবে।
যেমন হ্যারিএমসি তার উত্তরে বলেছেন , নোটপ্যাডের আরও ভাল বিকল্প রয়েছে। তবে নোটপ্যাড আপনাকে কোনও ফাইল খোলার সময় স্পষ্টভাবে এনকোডিং বাছাই করতে দেয় (অনুমান করার চেষ্টা করার জন্য নোটপ্যাড ছেড়ে যাওয়ার চেয়ে)।
বাইট অর্ডার মার্কস
ইউনিকোড কনসোর্টিয়াম অনুসারে, বাইট অর্ডার মার্কস (বিওএম) alচ্ছিক। তবে উইন্ডোজ কিছু এনকোডিংয়ের মধ্যে পার্থক্য করতে বিওএম-র উপর নির্ভর করে।
সুতরাং সংক্ষেপে, আপনার ফাইলগুলিতে কোনও কারণে কোনও বিওএমের অভাব রয়েছে? হয়ত আপগ্রেড প্রক্রিয়া চলাকালীন বিওএম হারিয়ে গেছে?
স্কোর হিসাবে প্রদর্শিত মূল ফাইলগুলি এখনও আপনার কাছে থাকলে আপনি সেগুলির একটি হেক্স ডাম্প তৈরি করতে পারেন যাতে সেগুলিতে একটি বিওএম রয়েছে contain
সাধারণ পাঠ্য ফাইলের মান
সমস্যাটি হ'ল কার্যকরভাবে কোনওটি নেই - প্লেইন পাঠ্য ফাইলগুলির জন্য কোনও সার্বজনীন মানক। পরিবর্তে আমাদের কাছে বেশ কয়েকটি ইনকম্প্যাটিবিলাইট এবং অজানা রয়েছে।
লাইন-এন্ডিংগুলি কীভাবে চিহ্নিত করা হয়েছে? কিছু প্ল্যাটফর্মগুলি লাইন ফিড (এলএফ) এর পরে ক্যারোল রিটার্ন (সিআর) ব্যবহার করে, কিছু সিআর একা ব্যবহার করে এবং কিছু এলএফ ব্যবহার করে।
উপরোক্ত টার্মিনেটর বা বিচ্ছেদকারী কি? এটি একটি ফাইলের শেষে প্রভাব ফেলে এবং এটি সমস্যার কারণ হিসাবে পরিচিত।
ট্যাব এবং অন্যান্য নিয়ন্ত্রণ অক্ষরের চিকিত্সা। আমরা ধরে নিতে পারি যে লাইনটি শুরু হওয়ার পরে 8 টি স্ট্যান্ডার্ড চরিত্রের প্রস্থের একাধিকগুলিতে সারিবদ্ধ করার জন্য একটি ট্যাব ব্যবহার করা হয়েছে, তবে সত্যই এটির কোনও নিশ্চিততা নেই। অনেক প্রোগ্রাম ট্যাব অবস্থান পরিবর্তন করতে দেয়।
চরিত্র সেট এবং এনকোডিং? এর মধ্যে কোনটি ফাইলের পাঠ্যের জন্য ব্যবহৃত হয়েছে তা নির্দেশ করার জন্য কোনও সর্বজনীন মান নেই। আমাদের নিকটতম একটি বিওএম এর উপস্থিতি সন্ধান করতে হবে যা ইউনিকোডের জন্য ব্যবহৃত এনকোডিংটিকে নির্দেশ করে। বিওএম মান থেকে ফাইলটি পড়া প্রোগ্রামটি ইউটিএফ -8 এবং ইউটিএফ -16 ইত্যাদি ইত্যাদির মধ্যে এবং লিটল-এন্ডিয়ান এবং ইউটিএফ -16 এর বিগ-এন্ডিয়ান ভেরিয়েন্টগুলির মধ্যে পার্থক্য করতে পারে a সিপি-1252 বা কেওআই -8 এর মতো অন্য যে কোনও জনপ্রিয় এনকোডিংয়ে এনকোড করা আছে।
ইত্যাদি। উপরের মেটাডেটার কোনওটিই টেক্সট ফাইলে লেখা নেই - সুতরাং ফাইলটি পড়ার সময় শেষ ব্যবহারকারীকে অবশ্যই প্রোগ্রামটি অবহিত করতে হবে। শেষ ব্যবহারকারীকে কোনও নির্দিষ্ট ফাইলের জন্য মেটাডেটা মানগুলি জানতে হবে বা তাদের প্রোগ্রামটি ভুল মেটাটাটা মান ব্যবহার করবে এমন ঝুঁকি চালাতে হবে।
বুশ ঘটনা লুকিয়ে রেখেছিল
উইন্ডোজ এক্সপি এ চেষ্টা করুন।
- নোটপ্যাড খুলুন।
- ফন্টটি অ্যারিয়াল ইউনিকোড এমএসে সেট করুন। (আপনাকে প্রথমে এটি ইনস্টল করতে হবে; আপনি যদি এটি মেনুতে না দেখতে পান তবে "আরও হরফ দেখান" এ ক্লিক করুন))
- "বুশ ঘটনাটি লুকিয়ে রেখেছিলেন" পাঠ্যটি প্রবেশ করান।
- চয়ন করুন
Save As
। Encoding
মেনু থেকে , নির্বাচন করুন ANSI
।
- নোটপ্যাড বন্ধ
- ডকুমেন্ট পুনরায় খুলুন (যেমন, ব্যবহার
Start
, My Recent Documents
)।
- আপনি "বুশ ঘটনাগুলি লুকিয়ে রেখেছেন" এর পরিবর্তে 畂 桳 栠 栠 摩 琠 敨 映 捡 獴 দেখতে পাবে।
এটি চিত্রিত করে যে IsTextUnicode
নোটপ্যাড দ্বারা ব্যবহৃত ফাংশনটি ভুলভাবে অনুমান করেছে যে এএনএসআই (সত্যিকারের কোড পৃষ্ঠা 1252) পাঠ্যটি বিওএম ছাড়াই ইউনিকোড ইউটিএফ -16 এলএল। হিসাবে সংরক্ষণ করা কোনও ফাইলে কোনও বিওএম নেই ANSI
।
উইন্ডোজ 7
উইন্ডোজ With এর সাথে, মাইক্রোসফ্ট IsTextUnicode
যাতে সামঞ্জস্য হয় যাতে উপরেরটি না ঘটে। কোনও বিওএমের অনুপস্থিতিতে ইউনিকোডের (ইউটিএফ -১LE এলই) তুলনায় এএনএসআই (সিপি 1252) এখন অনুমান করার সম্ভাবনা বেশি। উইন্ডোজ -7 আমি আশা অতএব তুমি আরো বিপরীত সমস্যা হওয়ার সম্ভাবনা: একটি ফাইল 255 তার চেয়ে অনেক বেশী কোড পয়েন্ট সঙ্গে ইউনিকোড অক্ষর ধারণকারী, কিন্তু কোন BOM সঙ্গে, এখন সম্ভাবনা বেশি ANSI হচ্ছে অনুমিত করা হয় - এবং সেইজন্য ভুল প্রদর্শিত।
এনকোডিং সমস্যা প্রতিরোধ করা
বর্তমানে, সর্বোত্তম পন্থাটি সর্বত্র ইউটিএফ -8 ব্যবহার করা বলে মনে হচ্ছে। আদর্শভাবে আপনি সমস্ত পুরানো পাঠ্য ফাইলগুলি ইউটিএফ -8 এ পুনরায় এনকোড করতে এবং কেবল কখনও পাঠ্য ফাইলগুলিকে ইউটিএফ -8 হিসাবে সংরক্ষণ করতে পারেন। সেখানে যেমন সরঞ্জাম recode এবং iconv যে এই সাহায্য করতে পারে।