সামগ্রী স্থানান্তর এনকোডিং 7 বিট বা 8 বিট


88

ইমেল সামগ্রী প্রেরণের সময়, এটি "সামগ্রী স্থানান্তর এনকোডিং" শিরোনাম সেট করা প্রয়োজন। আমি পেয়েছি যে ইমেল অনেক শিরোনাম। কিছু ইমেল "7 বিট" এবং কিছু "8 বিট" ব্যবহার করছে।

এই দুই এর মধ্যে পার্থক্য কি? কোনটি সুপারিশ করা হয়? এই শিরোনামগুলি সেট করার জন্য ইমেল বডিটির জন্য কি কোনও বিশেষ এনকোডিং প্রয়োজন?


আমি মনে করি না যে এই শিরোলেখটি সেট করা দরকার , তাইনা? আমি ইমেলের সাথে কাজ শুরু করছি এবং আমি এটিগুলি ছাড়াই ইমেলগুলি দেখেছি - খুব সাধারণ, অ-মাল্টিপার্ট, এএসসিআইআই-শুধুমাত্র পাঠ্য বার্তা।
অসুলিক

উত্তর:


283

এটি পড়তে কিছুটা ঘন হতে পারে তবে আরএফসি 1341 এর "সামগ্রী-স্থানান্তর-এনকোডিং" বিভাগে সমস্ত বিবরণ রয়েছে:

http://www.w3.org/Potocols/rfc1341/5_Content-Transfer-Encoding.html

পরিস্থিতি খারাপ থেকে আরও খারাপ দিকে চলে যায়। আমার সংক্ষিপ্তসারটি এখানে:

পটভূমি

এসএমটিপি, সংজ্ঞা অনুসারে (আরএফসি 821), মেলকে সীমাবদ্ধ করে প্রতিটি বিটের 1000 টি অক্ষরের লাইনে। এর অর্থ হল যে আপনি যে বাইটটি পাইপটি পাঠিয়েছেন তার কোনওটিতেই সর্বাধিক তাৎপর্যপূর্ণ ("সর্বোচ্চ অর্ডার") বিট "1" এ সেট করা যাবে না।

আমরা যে সামগ্রীটি প্রেরণ করতে চাইছি তা প্রায়শই সহজাতভাবে এই সীমাবদ্ধতা মানবে না। কোনও চিত্র ফাইল বা কোনও পাঠ্য ফাইলের কথা চিন্তা করুন যেখানে ইউনিকোড অক্ষর রয়েছে: এই ফাইলগুলির বাইটগুলি প্রায়শই তাদের 8 তম বিটটি "1" এ সেট করে। এসএমটিপি এটি অনুমতি দেয় না, সুতরাং আপনি কী অমিলের আশেপাশে কাজ করেছেন তা বর্ণনা করার জন্য আপনাকে "ট্রান্সফার এনকোডিং" ব্যবহার করতে হবে।

শিরোনামের মানগুলি Content-Transfer-Encodingআপনাকে এই সমস্যাটি সমাধান করার জন্য যে নিয়মটি বেছে নিয়েছে তা বর্ণনা করে।

7 বিট এনকোডিং

7bitসহজভাবে "" আমার ডেটাতে কেবল ইউএস-এএসসিআইআই অক্ষর রয়েছে, যা প্রতিটি অক্ষরের জন্য কেবল কম 7 বিট ব্যবহার করে। " আপনি মূলত গ্যারান্টি দিচ্ছেন যে আপনার সামগ্রীতে থাকা সমস্ত বাইট ইতিমধ্যে এসএমটিপি-র সীমাবদ্ধতা মেনে চলেছে এবং তাই এর কোনও বিশেষ চিকিত্সার প্রয়োজন নেই। আপনি ঠিক যেমন এটি পড়তে পারেন।

নোট করুন যে আপনি যখন চয়ন করবেন 7bit, আপনি সম্মত হচ্ছেন যে আপনার সামগ্রীর সমস্ত লাইন দৈর্ঘ্যের 1000 টির চেয়ে কম অক্ষরের।

আপনার বিষয়বস্তু যতক্ষণ না এই নিয়ম মেনে চলে, ততক্ষণ 7bitহ'ল সেরা স্থানান্তর এনকোডিং, যেহেতু অতিরিক্ত কোনও কাজ করার দরকার নেই; বাইটগুলি পাইপ থেকে নামার সাথে সাথে আপনি কেবল পড়েন / লিখবেন। চোখের 7bitকন্টেন্ট এবং এটি উপলব্ধি করাও সহজ । এখানে ধারণাটি হ'ল আপনি যদি কেবল "সরল ইংরাজী পাঠ্য" লিখে থাকেন তবে আপনি ভাল হয়ে যাবেন। তবে এটি 2005 সালে সত্য ছিল না এবং এটি আজও সত্য নয়।

8 বিট এনকোডিং

8bitএর অর্থ "আমার ডেটাতে বর্ধিত ASCII অক্ষর অন্তর্ভুক্ত থাকতে পারে; তারা স্ট্যান্ডার্ড ইউএস-এএসসিআইআই 7-বিট অক্ষরের বাইরে বিশেষ অক্ষরগুলি চিহ্নিত করতে 8 ম (সর্বোচ্চ) বিটটি ব্যবহার করতে পারে।" হিসাবে 7bit, এখনও 1000-অক্ষর রেখা সীমা আছে।

8bitঠিক যেমন 7bit, বাইটগুলি সেগুলি লেখা হয় বা তার থেকে পড়েছিল সেভাবে বাস্তবে কোনও রূপান্তর ঘটে না। এর অর্থ হ'ল আপনি গ্যারান্টি দিচ্ছেন না যে কোনওটি বাইটের মধ্যে "1" সর্বাধিক বিট সেট হবে না।

এটি এটিকে একটি পদক্ষেপের মতো বলে মনে হচ্ছে 7bit, কারণ এটি আপনাকে আপনার সামগ্রীতে আরও স্বাধীনতা দেয় freedom তবে, আরএফসি 1341 এ টিডবিটটি ধারণ করে:

এই দস্তাবেজটির প্রকাশ হিসাবে, এমন কোনও মানকযুক্ত ইন্টারনেট ট্রান্সপোর্ট নেই যার জন্য মেল বডিগুলিতে আনইনকোডযুক্ত 8-বিট বা বাইনারি ডেটা অন্তর্ভুক্ত করা বৈধ। সুতরাং এমন কোনও পরিস্থিতি নেই যেখানে "8 বিট" বা "বাইনারি" সামগ্রী-স্থানান্তর-এনকোডিংটি আসলে ইন্টারনেটে আইনী।

আরএফসি 1341 20 বছর আগে এসেছিল। তারপর থেকে আমরা অর্জিত করেছি এমআইএমই এক্সটেনশানগুলি 8bit মধ্যে বোঝায় যা RFC 6152 । তবে তারপরেও লাইন সীমা এখনও প্রয়োগ হতে পারে:

নোট করুন যে এই এক্সটেনশনটি কোনও এসএমটিপি সার্ভারের লাইন দৈর্ঘ্য সীমাবদ্ধ করার সম্ভাবনাটি সরিয়ে দেয় না; সার্ভারগুলি এই এক্সটেনশনটি বাস্তবায়িত করতে বিনামূল্যে তবে তবুও একটি লাইন দৈর্ঘ্যের সীমাটি 1000 অক্টেটের চেয়ে কম নয় set

বাইনারি এনকোডিং

binaryএর মতোই 8bit, লাইন দৈর্ঘ্যের কোনও সীমাবদ্ধতা বাদে। আপনি চাইলে যে কোনও অক্ষর অন্তর্ভুক্ত করতে পারেন এবং কোনও অতিরিক্ত এনকোডিং নেই। অনুরূপ 8bit, আরএফসি 1341 বলেছে যে এটি সত্যিকার অর্থে কোনও বৈধ এনকোডিং স্থানান্তর এনকোডিং নয়। আরএফসি 3030 এর সাথে এটি বাড়িয়েছে BINARYMIME

উদ্ধৃত মুদ্রণযোগ্য

8BITMIMEএক্সটেনশনের আগে , 7bitএসএমটিপি-র উপরে থাকতে পারে না এমন সামগ্রী পাঠানোর একটি উপায় থাকা দরকার । এইচটিএমএল ফাইলগুলি (যার মধ্যে 1000-অক্ষরের বেশি লাইন থাকতে পারে) এবং আন্তর্জাতিক অক্ষরের ফাইলগুলি এর ভাল উদাহরণ। quoted-printableএনকোডিং (RFC 1341 ধারা 5.1 সংজ্ঞায়িত) এই হ্যান্ডেল ডিজাইন করা হয়েছে। এটি দুটি কাজ করে:

  • ইউএস-এএসসিআইআই অক্ষরগুলি কীভাবে এড়াতে হবে তা সংজ্ঞায়িত করে যাতে কেবল মাত্র 7-বিট অক্ষরে তাদের প্রতিনিধিত্ব করা যায়। (সংক্ষিপ্ত সংস্করণ: তারা সমান চিহ্ন হিসাবে দুটি দুটি 7-বিট অক্ষর হিসাবে প্রদর্শিত হবে))
  • সংজ্ঞা দেয় যে রেখাগুলি characters characters টি অক্ষরের বেশি হবে না এবং সেই লাইন বিরতিগুলি বিশেষ অক্ষরগুলি (যা পরে পালিয়ে যায়) ব্যবহার করে উপস্থাপন করা হবে।

উদ্ধৃত মুদ্রণযোগ্য, পলায়ন এবং সংক্ষিপ্ত রেখার কারণে, একজন মানুষের দ্বারা 7bitবা তার চেয়ে পড়া খুব বেশি কঠিন 8bit, তবে এটি সম্ভাব্য সামগ্রীর আরও বিস্তৃত পরিসরকে সমর্থন করে।

বেস 64 এনকোডিং

যদি আপনার ডেটাটি মূলত অ-পাঠ্য হয় (যেমন: একটি চিত্র ফাইল), আপনার কাছে অনেকগুলি বিকল্প নেই। 7bitটেবিলের বাইরে 8bitএবং binaryমাইম এক্সটেনশন আরএফসিগুলির পূর্বে অসমর্থিত ছিল। quoted-printableকাজ করবে, তবে সত্যই অদক্ষ (প্রতিটি বাইট 3 টি অক্ষর দ্বারা প্রতিনিধিত্ব করা হবে)।

base64এই ধরণের ডেটা জন্য একটি ভাল সমাধান। এটি 4 কাঁচা বাইটগুলি 4 মার্কিন-এএসসিআইআই অক্ষর হিসাবে এনকোড করে, যা তুলনামূলকভাবে দক্ষ। আরএফসি 1341 base64এসএমটিপি বার্তার মধ্যে ফিট করার জন্য এনকোডড ডেটার রেখার দৈর্ঘ্যকে 76 টি অক্ষরে সীমাবদ্ধ করে , তবে আপনি যখন নির্ধারিত দৈর্ঘ্যে স্বেচ্ছাচারিত অক্ষরগুলি কেবল বিভক্ত করছেন বা সংযুক্ত করছেন তখন পরিচালনা করা অপেক্ষাকৃত সহজ।

সবচেয়ে বড় base64ক্ষতিটি হ'ল - এনকোডেড ডেটা মানুষের দ্বারা সম্পূর্ণরূপে অপঠনযোগ্য, এমনকি যদি এটি নীচে কেবল "সরল" পাঠ্য হয়।


10
এটি একটি আশ্চর্যজনক উত্তর, আমি আশা করি আমি 100 বার উপার্জন করতে পারতাম! যদিও একটি প্রশ্ন: এই নিয়মগুলি সংযুক্তির জন্য প্রযোজ্য? আমার কাছে থাকা উদাহরণটি একটি ইমেলের সাথে সংযুক্ত একটি এক্সএমএল ফাইল, যেখানে এক্সএমএল ফাইলের বিষয়বস্তুতে ইউটিএফ -8 ডেটা থাকে। এখানে সঠিক পদ্ধতির কি?
ট্রোজাননেম

4
@ ট্রোজাননাম: হ্যাঁ, এগুলি সংযুক্তি সহ সমস্ত ইমেল সামগ্রীতে প্রযোজ্য। (সমস্ত কিছু কভারের অধীনে মাইমাম "অংশগুলি পৃথক করুন, তবে এটি অন্য গল্প)) আপনার ইমেলটি পেতে আপনার সামগ্রীটি এখনও কোনওভাবে এনকোড করতে হবে।
ক্রেগ ওয়াকার

4
@ ট্রোজাননেম: যে কোনও ফাইলই একটি "বাইনারি" ফাইল, এটিকে পাঠ্য হিসাবে বিবেচনা করা যায় কিনা তা বিবেচনা না করে, সুতরাং বিনারিমাইম এবং বাইনারি উপলব্ধ (যতই তারা যে কোনও কিছুর জন্য উপলব্ধ)। 7 বিটটি ভাল নয় কারণ আপনার ইউটিএফ -8 সামগ্রীতে উপস্থাপনের জন্য 8 টি বিট দরকার needs 8 বিটটি ভাল নয় কারণ এর জন্য লাইন দৈর্ঘ্যের সীমাবদ্ধতাগুলির প্রয়োজন যা আপনার সামগ্রীর অংশ নয়।
ক্রেগ ওয়াকার

4
এটি উদ্ধৃত মুদ্রণযোগ্য বা বেস 64 ছেড়ে যায়, উভয়ই আপনার এক্সএমএল ডকুমেন্টকে আপনার ইমেলের মধ্যে সফলভাবে এনকোড করতে পারে। মনে রাখবেন যে এই দু'টিই কাঁচা ফর্ম্যাটে একটি মানুষের পক্ষে পড়া আরও কঠিন করে তুলছে (বেস 64 অপঠনযোগ্য, কিউপি কঠিন)। তবে মানুষের পাঠযোগ্যতা একটি গৌণ উদ্বেগ; যতক্ষণ আপনি সর্বদা অনুমান করেন আপনাকে এটিকে ডিকোড করার পাশাপাশি এটি এনকোড করতে হবে, তবে আপনি ভাল আছেন।
ক্রেগ ওয়াকার

4
সংযোজন সীমাবদ্ধতা: 8-বিটের শূন্যস্থান বা অ-শেষের-লাইন সিআর বা এলএফ অন্তর্ভুক্ত করার কথা নয়।
সর্বোচ্চ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.