ইউটিএফ এফএকিউতে প্রদত্ত অফিসিয়াল ইউনিকোড এনকোডিংগুলির মধ্যে সম্পূর্ণরূপে অনুবর্তী কনভার্টার তৈরির লক্ষ্য । এটি ইউনিকোডকে কেন্দ্র করেই দেওয়া হয়েছে, জড়িত এনকোডিংগুলির সর্বাধিক সম্ভব (যা সম্ভবত ইউটিএফ -8 হবে, যদি না আপনি এপিএলে প্রোগ্রাম না করেন) ব্যবহার করে আমি সর্বনিম্ন বাইট গণনা সহ উত্তরটি গ্রহণ করব। আমি দীর্ঘ পোস্টের জন্য ক্ষমাপ্রার্থী, তবে এটির অনেকগুলি এনকোডিংগুলি ব্যাখ্যা করছে যা অফিসিয়াল স্পেসিফিকেশন (পিডিএফ, বিভাগ 3.9 ডি 90 - ডি 92) , বা উইকিপিডিয়াতেও অ্যাক্সেস করতে পারে ।
বিশেষ উল্লেখ
যে কোনও সময়ে যদি আপনার পছন্দের ভাষাটি সঠিকভাবে কোনও চাহিদা পূরণ করতে না পারে তবে এটিকে এমন কিছু দিয়ে প্রতিস্থাপন করুন যা প্রদত্ত বিধিগুলির চেতনাকে আটকে দেয়। যেমন। প্রতিটি ভাষার অন্তর্নির্মিত অ্যারে, ফাংশন ইত্যাদি নেই not
স্ট্রিং লাইব্রেরি / ফাংশন, বা এনকোডিং লাইব্রেরি / ফাংশন ব্যবহার করছে না। এই কোড গল্ফের বিন্দুটি হ'ল বিট / বাইট ম্যানিপুলেশন ব্যবহার করে কনভার্টারটি প্রয়োগ করা। একটি অক্ষর বা বাইট অ্যারে হিসাবে তাদের ক্ষমতা তাদের নিজের স্ট্রিং ব্যবহার অনুমোদিত যদিও। ওহ, এবং কোনও ওএস কল নেই যা রূপান্তরটি সম্পাদন করে।
রূপান্তরকারী একটি ফাংশন যা তিনটি পরামিতি নেবে: এনকোডড ইনপুট স্ট্রিংকে উপস্থাপন করে একটি বাইট অ্যারে এবং সংখ্যার হিসাবে উপস্থাপিত "ইনপুট" এবং "আউটপুট" এনকোডিংগুলি। নির্বিচারে আমরা
UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, and UTF32LE
সেই ক্রমে 0 থেকে 6 নম্বর নির্ধারণ করব । সংখ্যা হলে চেক করতে কোন প্রয়োজন নেই< 0
বা> 6
, আমরা এই পরামিতি সঠিক অনুমান হবে। রূপান্তরকারী পছন্দসই আউটপুট এনকোডিংয়ে একটি বৈধ বাইট অ্যারে প্রদান করবে।আমরা
U+0000
স্ট্রিং টার্মিনেটর হিসাবে নাল অক্ষর ( ) ব্যবহার করব । এর পরে যে কোনও কিছুতেই কিছু আসে যায় না। আমরা ধরে নেব যে ইনপুট অ্যারেতে কোথাও নাল অক্ষর রয়েছে তাই আপনার বাউন্ডস চেক করার প্রয়োজন নেই।অনুযায়ী প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী , যদি ইনপুট বাইট অ্যারের তার ঘোষিত এনকোডিং-এর অবৈধ, আমরা একটি ত্রুটি সংকেত নয়। আমরা নিম্নলিখিত পদ্ধতির একটিতে এটি করব: প্রোগ্রামটি ক্র্যাশ করুন, একটি ব্যতিক্রম নিক্ষেপ করুন, নালটি ফিরুন বা এমন অ্যারে ফিরবেন যার প্রথম চারটি বাইট সমস্ত 0 (যাতে এটি
U+0000
প্রতিটি এনকোডিং হিসাবে স্বীকৃত হতে পারে )।
এনকোডিংস
অফিসিয়াল স্পেসিফিকেশন অবশ্যই অনুসরণ করা উচিত, তবে উইকিপিডিয়া এনকোডিংগুলির একটি ভাল (এবং যতদূর আমি সঠিক বিশ্বাস করি) সরবরাহ করে, এবং আমি এখানে তাদের সম্পূর্ণতার জন্য সংক্ষিপ্ত করব। নোট করুন যে ইউটিএফ -16 এবং ইউটিএফ -32 এর এন্ডিয়েনেসের জন্য বৈকল্পিক রয়েছে ।
UTF-32, UTF-32LE, UTF-32BE
সহজতম এনকোডিং, প্রতিটি কোড পয়েন্টটি কেবল তার সংখ্যাসূচক মানের সমান 4 বাইটে এনকোড করা হয়। এলই / বিই এন্ডিনিয়েন্সকে দেখায় (ছোট এন্ডিয়ান / বিগ এন্ডিয়ান))
UTF-16, UTF-16LE, UTF-16BE
এর কোড পয়েন্টগুলি U+0000 - U+FFFF
এর সাংখ্যিক মানের সমান 2 বাইটে এনকোড করা আছে। বৃহত্তর মানগুলি এক জোড়া সারোগেট ব্যবহার করে এনকোড করা হয় যা থেকে সংরক্ষিত মানগুলি U+D800 - U+DFFF
। এর চেয়ে বড় পয়েন্টগুলি এনকোড করতে U+FFFF
, নিম্নলিখিত অ্যালগরিদম ব্যবহার করা যেতে পারে (নির্লজ্জভাবে উইকিপিডিয়া থেকে অনুলিপি করা ):
- 0x010000 কোড পয়েন্ট থেকে বিয়োগ করা হয়, 0..0x0FFFF ব্যাপ্তিতে 20 বিট নম্বর রেখে।
- প্রথম কোড ইউনিট বা সীসা সারোগেট দেওয়ার জন্য শীর্ষ দশ বিট (0..0x03FF পরিসরের একটি সংখ্যা) 0xD800 এ যুক্ত করা হয় যা 0xD800..0xDBFF এর পরিসীমাতে হবে [...]।
- দ্বিতীয় কোড ইউনিট বা ট্রেইল সারোগেট দেওয়ার জন্য নিম্ন দশ বিট (০.০x03FF পরিসীমাতেও) 0xDC00 এ যুক্ত করা হয়, যা 0xDC00..0xDFFF পরিসরে হবে [...]।
হল UTF-8
থেকে কোড পয়েন্টগুলি U+0000 - U+007F
এর সংখ্যাগত মানের সমান 1 বাইট হিসাবে এনকোড করা আছে। থেকে U+0080 - U+07FF
তারা এনকোডেড থাকে 110xxxxx 10xxxxxx
, U+0800 - U+FFFF
হয় 1110xxxx 10xxxxxx 10xxxxxx
, উচ্চ মান 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
। x
এর কোড বিন্দু সাংখ্যিক মান থেকে বিট।
BOM
বাইট-অর্ডার চিহ্ন (বিওএম, U+FEFF
) সর্বশেষতা নির্দেশ করতে প্রথম কোড পয়েন্ট হিসাবে ব্যবহৃত হয়। বিওএম সম্পর্কিত প্রশ্নোত্তর নির্দেশিকা অনুসরণ করে , বিওএমটি নিম্নলিখিতভাবে ব্যবহৃত হবে: এটি itচ্ছিকUTF-8, UTF-16 and UTF-32
। যদি বিওএম অনুপস্থিত থাকে UTF-16
বা UTF-32
, এটি বড় এন্ডিয়ান বলে ধরে নেওয়া হয়। বিওএম অবশ্যই উপস্থিত হবে নাUTF-16LE, UTF-16BE, UTF-32LE and UTF-32BE
।
সাধারণ সমস্যাগুলি অবৈধ ইউটিএফ-এর কারণ
বিভিন্ন জিনিস বাইট সিকোয়েন্সটি অবৈধ ইউটিএফ হতে পারে।
- ইউটিএফ -8 এবং ইউটিএফ -32: সরাসরি সরোগেট কোড পয়েন্ট (
U+D800 - U+DFFF
), বা এর চেয়ে বেশি কোড পয়েন্ট এনকোডিংU+10FFFF
। - ইউটিএফ -8: অনেকগুলি অবৈধ বাইট সিকোয়েন্স।
- ইউটিএফ -16: অযৌক্তিক, বা অনুপযুক্ত জোড়যুক্ত সারোগেটগুলি।
- বিওএম: এনকোডিং বিভাগে নির্দিষ্ট হিসাবে অবশ্যই ব্যবহার করা উচিত। নোট করুন যে আউটপুট আউট করার সময়
UTF-16
বাUTF-32
(কোনও অন্তর্নিহিত অন্তর্নিহিততা নির্দিষ্ট করা হয়নি) আপনি বেছে নিতে পারেন, তবে অল্প ইন্ডিয়ান দিয়ে আপনাকে অবশ্যই বিওএম অন্তর্ভুক্ত করতে হবে ।
নোট করুন যে অ-অক্ষরগুলি এবং অ-নিযুক্ত কোড পয়েন্টগুলি (উভয় পৃথক পৃথক থেকে পৃথক) নিয়মিত অক্ষরের মতো আচরণ করা উচিত।
''⎕R''⍠'InEnc' 'UTF16BE' 'OutEnc' 'UTF8-BOM'
,।