ইউটিএফ -8 (এবং সম্ভবত ইউটিএফ -16 / ইউটিএফ -32) এর পাশাপাশি অক্ষরের এনকোডিংগুলি কি অবচয় করা উচিত?


31

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

উদাহরণস্বরূপ, আমাকে পোস্টগ্রেএসকিউএল এবং এর অক্ষর সেট সমর্থনটি বাছাই করুন । পোস্টগ্রেএসকিউএল দুটি ধরণের এনকোডিংয়ের সাথে সম্পর্কিত:

  • ক্লায়েন্ট এনকোডিং: ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগের ক্ষেত্রে ব্যবহৃত হয়।
  • সার্ভার এনকোডিং: ডাটাবেসে অভ্যন্তরীণভাবে পাঠ্য ব্যবহৃত হয়।

আমি বুঝতে পারি কেন অনেক ক্লায়েন্ট এনকোডিং সমর্থন করা ভাল জিনিস। এটি রূপান্তর সম্পাদন করার প্রয়োজন ছাড়াই পোস্টগ্র্রেএসকিউএলএর সাথে যোগাযোগের জন্য ইউটিএফ -8 এ পরিচালনা না করে এমন ক্লায়েন্টদের সক্ষম করে। আমি যা পাই না তা হ'ল পোস্টগ্রিস এসকিউএল কেন একাধিক সার্ভার এনকোডিংগুলিকে সমর্থন করে ? ডেটাবেস ফাইলগুলি একটি প্রায় পোস্টগ্রিসএসকিউএল সংস্করণ থেকে পরবর্তীটিতে অসামঞ্জস্যপূর্ণ, সুতরাং ক্রস-সংস্করণ সামঞ্জস্যতা এখানে সমস্যা নয়।

ইউটিএফ -8 হ'ল একমাত্র স্ট্যান্ডার্ড, এএসসিআইআই-সামঞ্জস্যপূর্ণ চরিত্র সেট যা সমস্ত ইউনিকোড কোডপয়েন্টগুলিকে এনকোড করতে পারে (যদি আমি ভুল হয়ে থাকি তবে আমাকে জানান)। আমি শিবিরে রয়েছি যে ইউটিএফ -8 সেরা চরিত্রের সেট, তবে আমি ইউটিএফ -16 এবং ইউটিএফ -32 এর মতো অন্যান্য সর্বজনীন চরিত্রের সেটগুলি রাখতে প্রস্তুত up

আমি বিশ্বাস করি যে সমস্ত অ-সর্বজনীন চরিত্রের সেটগুলি হ্রাস করা উচিত। তাদের উচিত নয় এমন কোন বাধ্যতামূলক কারণ আছে?


4
@ মারিও: ইউটিএফ -8 এর আসল সংজ্ঞাটি 6 বাইট পর্যন্ত অনুমোদিত। এটি পরে কৃত্রিমভাবে কেবলমাত্র ইউটিএফ -16 সমর্থন করতে পারে এমন অক্ষরগুলি কভার করার জন্য সীমাবদ্ধ ছিল।
dan04

6
কমপক্ষে PostgreSQL ইচ্ছাকৃতভাবে একাধিক অক্ষর এনকোডিংয়ের সাথে ডিল করে। এটি ইউটিএফ -8 এবং উইন্ডোজ -১২২২ এর এলোমেলো মিশ্রণটি মোকাবেলা করতে ব্যর্থ হয়েছে কারণ কেউ শুধু যত্ন করে নি।
dan04

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

3
তাত্ত্বিক ইউনিকোড পরিসর 0 থেকে 0x10ffff পর্যন্ত। বেশি না. ইউনিকোড স্ট্যান্ডার্ড এটাই বলে। ইউটিএফ -8 ইউনিকোডের সবগুলি পরিচালনা করে এবং সর্বদা করবে। এটি ইউনিকোড নয় এমন এনকোডিংয়ের অনুমানের পরিধিটি আবরণ করে না, তবে এটি সমস্ত ইউনিকোডকে কভার করে।
gnasher729

উত্তর:


16

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

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

অন্যান্য উত্তরে বর্ণিত অন্যান্য কিছু কারণগুলি সমর্থনকারী যুক্তি হিসাবেও প্রয়োগ হয়। তবে যতক্ষণ না জাপানিরা এটি ভেটো করেন ততক্ষণ অক্ষর সেটআপ সমর্থন হ্রাস করা যায় না।


সুতরাং, এই এনকোডিংগুলির কারণে, ইউটিএফ -8 এবং পিছনে পাঠ্যের রূপান্তরটি কি সাধারণভাবে ক্ষয়ক্ষতি হয়? এমনকি যদি রূপান্তরটি তাত্ক্ষণিকভাবে হয়ে যায় (এখন থেকে 6 মাসের চেয়ে)?
জোয়ি অ্যাডামস

জোয়ে অ্যাডামস: স্পষ্টতই তাই।
পিটার আইজেনট্রাট

3
"হান একীকরণ" এর জন্য গুগল কেন তা দেখার জন্য
পেটর ভিক্টরিন

7

দুটি সুস্পষ্ট কারণ: আপনি যে স্টোরটি সংরক্ষণ করছেন তার উপর নির্ভর করে ভিন্ন ফর্ম্যাটে রূপান্তর করতে বেশ খানিকটা সময় এবং অতিরিক্ত রুম লাগতে পারে। যদি আপনি ৪০০ মেগাবাইট তথ্য সঞ্চয় করে রাখেন তবে স্টোরেজ প্রয়োজনীয়তা দ্বিগুণ করা কোনও বড় বিষয় নয় - তবে আপনি যদি 400 টেরাবাইট সংরক্ষণ করেন তবে এটি আরও কিছুটা বোঝাতে শুরু করে। শিফট-জেআইএস থেকে ইউটিএফ-এক্সে 400 টেরাবাইট ডেটা রূপান্তর করা কিছুটা সময় নিতে পারে।

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

আপনি যদি এমন কোনও ডাটাবেস দিয়ে শুরু করছিলেন যা (উদাহরণস্বরূপ) কেবলমাত্র এসসিআইআইকে সমর্থন করেছিল, তবে এই সমস্ত এনকোডিংয়ের জন্য সমর্থন যোগ করার কোনও অর্থ হয়েছিল কিনা তা নিয়ে বিতর্ক করার পক্ষে যুক্তিযুক্ত কারণ থাকতে পারে - তবে আপনি যদি ইতিমধ্যে তাদের সমর্থন করেন তবে ড্রপ থেকে কিছুটা লাভ হবে না তাদের জন্য সমর্থন।

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

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


1
শিফট-জেআইএস অ-স্ব-সিঙ্ক্রোনাইজিং যা অনুসন্ধানকে জটিল করে তোলে। আপনি এটি সমর্থন না করে উল্লেখযোগ্য সরলীকরণ অর্জন করতে পারেন।
dan04

@ ডান04: আপনার যদি ইতিমধ্যে শিফট-জেআইএস-এর জন্য সময়-প্রমাণিত অনুসন্ধান / সূচীকরণের রুটিন থাকে, ইউটিএফ -8 বা এমনকি ইউসিএস 2-এ স্যুইচিং সম্ভবত পারফরম্যান্সকে তুচ্ছ করে তুলবে। একটি জন্য নতুন ডাটাবেসের আপনি একটি ভাল, আরও বেশি সুবিধাজনক এবং নিয়মিত এনকোডিং, UCS2 অথবা UTF-16 মত চয়ন করতে পারে।
9000

@ ডান04: আপনি যদি একে একে সমর্থন না করে পালিয়ে যেতে পারতেন তবে আপনি কিছুটা লাভ করতে পারতেন। যতক্ষণ আপনি এটি ক্লায়েন্টদের কাছ থেকে আসা / যাওয়া সমর্থন করেন ততক্ষণ আপনি এর বেশিরভাগ কদর্যতা নিয়ে আটকে যাবেন ...
জেরি কফিন

5

সার্ভারে কেবল ইউটিএফ -8 সংরক্ষণ করার ক্ষেত্রে বেশ কয়েকটি সমস্যা রয়েছে:

  1. একটি VARCHAR(20)কলামের সীমা কত ? আপনি কি 20 বাইট, বা 20 "অক্ষর" (এবং ইউনিকোডে, যখন আপনি অক্ষর, লিগচার এবং আরও একত্রিত করে অ্যাকাউন্টটি গ্রহণ করেন তখন কী "চরিত্র"?) সবচেয়ে খারাপ কথা, CHAR(20)এটিতে আসলে এটির সম্পূর্ণ সম্ভাব্য স্থানটি সংরক্ষণ করতে হবে: আমি মাইএসকিউএলে বিশ্বাস করি, এটি CHAR(20)কেবলমাত্র সবচেয়ে খারাপ-কেসটি পরিচালনা করতে কোনও ইউটিএফ -8 এনকোডেড কলামের (তাই 80 বাইট ) বাইটের সংখ্যার 4 গুণ সংরক্ষণ করে ।
  2. আপনাকে সার্ভার এনকোডিং এবং আপনার ক্লায়েন্ট এনকোডিংয়ের মধ্যে ধ্রুবক এনকোডিং রূপান্তরগুলি করা দরকার। আপনি তর্ক করতে পারেন যে আপনি একাধিক ক্লায়েন্ট এনকোডিংগুলি সমর্থন করাও বন্ধ করতে চান, তবে আপনি যদি তা না করেন তবে সমস্ত স্ট্রিংগুলিকে সর্বদা রূপান্তর করা দরকার। আপনি যদি নিজের সার্ভারের এনকোডিং এবং ক্লায়েন্ট এনকোডিংয়ের সাথে মেলে করতে পারেন, তবে রূপান্তরগুলির প্রয়োজন হবে না।
  3. অন্যরা যেমন উল্লেখ করেছে, ইউটিএফ -8 ইংরেজি পাঠ সংরক্ষণের জন্য বেশ দক্ষ, তবে এটি অন্যান্য ভাষার জন্য বিশেষত পূর্ব এশীয় ভাষাগুলির পক্ষে অত্যন্ত অদক্ষ । আমি মনে করি আপনি ইউটিএফ -16 বা ইউটিএফ -8 স্যুট হিসাবে ব্যবহার করতে পারবেন could অথবা পাঠ্যকে সংকুচিত করুন, তবে এটি সূচীকরণ এবং অনুসন্ধানকে অক্ষম করে।

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

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


10
"তবে এটি অন্যান্য ভাষার জন্য খুব অদক্ষ - পূর্ব এশীয় ভাষাগুলি, বিশেষত" এমনকি বাস্তবেও? এই চীনা উইকিপিডিয়া পৃষ্ঠা বিবেচনা করুন । যদিও এটি পৃষ্ঠার উত্সে, চীনাগুলির একটি বিরাট অক্ষর প্রদর্শন করে, ASCII অক্ষরগুলি প্রায় 7: 1 এ তাদের ছাপিয়ে যায়।
জোয়ে অ্যাডামস

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

5
@ জোয়ে অ্যাডামস: এটি HTML এবং XML এর ক্ষেত্রে সত্য যেখানে মার্কআপ নিজেই পাঠ্যের একটি বৃহত অনুপাত তৈরি করে (এবং আমি মনে করি ইউটিএফ -8 ওয়েবের জন্য ভাল পছন্দ) তবে একটি ডাটাবেসে আপনি প্রায়শই সঞ্চয় করেন না এইচটিএমএল। দিনের শেষে, এটি কেবল দুটি (বা তার চেয়ে কম) পার্থক্যের একটি কারণ, যা এতটা সত্য নয়।
ডিন হার্ডিং

5
এই উত্তরের বুলেট পয়েন্ট # 2 অপ্রাসঙ্গিক: এটি ইউনিকোড ব্যবহৃত হয়েছে কিনা তা প্রয়োগ করে। বুলেট পয়েন্ট # 3 একেবারে অদক্ষতা এবং এর সুযোগকে অতিরঞ্জিত করে। একই সময়ে, এই উত্তরটি উত্তরাধিকারসূচক এনকোডিংগুলির দ্বারা সৃষ্ট সমস্যাগুলিকে ব্যাপকভাবে হ্রাস করে। আপনার জীবনের জীবনে যে কোনও সময়ই ইংরেজী ব্যবহার করা হয় তা যদি সমস্যাটি মনে হয় তবে এটি এত বড় বিষয় নয়।
টিমভি

2
@ ডিয়ান: আমি জানতাম না যে আমার নিজের কোনও পোস্ট না করে কোনও উত্তর সম্পর্কে মন্তব্য করার অনুমতি দেওয়া হয়নি।
টিমউই

3

অ-সর্বজনীন (এবং বিশেষত একক-বাইট) এনকোডিংগুলির স্থান রয়েছে: এমন সিস্টেমে যেগুলি:

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

এম্বেড থাকা কিছু ধরণের ডিভাইসের জন্য এটি আজ সত্য। কিন্তু ডেস্কটপে, এবং সার্ভার রুমে, অ-ইউনিকোড এনকোডিং হওয়া উচিত দীর্ঘ অপ্রচলিত এখন দ্বারা।


3
আমার মতো হোম কম্পিউটার ছিল used আমি 80 এর দশকের গোড়ার দিকে তাদের বেশিরভাগ থেকে মুক্তি পেয়েছি।
ডেভিড থর্নলি

2

ইউটিএফ -8 আপনার পক্ষে অহংকারক 1 ইংরাজীর স্পিকার সেরা। আপনি যদি জাপানি হন, আপনার প্রায় 99% অক্ষর ইউটিএফ -16 এ দুটি পরিবর্তে 3-4 বাইট নিতে হবে।

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

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

1. অহংকারিক অংশটি ব্যক্তিগতভাবে গ্রহণ করবেন না। আমি একটি বর্ণা .্য চিত্র তুলতে চেয়েছিলাম এবং আমি এটি সত্যই বোঝাতে চাই না।


3
@ ম্যাথেজ - 4x স্পষ্টত x এর চেয়ে 4 গুণ বড় (ধনাত্মক x এর জন্য)। অ্যাসিম্পটোটিক স্বরলিপিটি এখানে কীভাবে প্রাসঙ্গিক তা আমি দেখতে পাই না। অ্যাসিম্পটোটিক বৃদ্ধির হারের সাথে বিজ্ঞাপনিত কোনও হার্ড ডিস্ক আমি কখনও দেখিনি। সাধারণত, আকারটি ড্রাইভের পুরো জীবন জুড়ে একই থাকে।
স্টিভ 314

3
কয়েক মিলিয়ন অক্ষর যেভাবেই ইউনিকোডে ফিট করবে না। উইকিপিডিয়া নিবন্ধ অনুসারে বর্তমানে প্রায় ষাট হাজার হ্যান চরিত্র রয়েছে। ইউনিকোড যেহেতু কেবল চীনা নয়, এর অর্থ এই যে ইউটিএফ -১ 16 এ ন্যায্য সংখ্যক চাইনিজ চরিত্র চার বাইট লাগবে, যা ইউটিএফ -৮ আজকাল দীর্ঘতর। ইউটিএফ -8 এবং ইউটিএফ -16-তে দীর্ঘ পরিমাণে চীনা পাঠ্যের পরিসংখ্যানগুলি দেখতে আকর্ষণীয় হবে।
ডেভিড থর্নলি

6
@ ডেভিড:> সমস্ত জাপানি এবং চীনা লিখনের 99% অক্ষর ব্যবহার করে যার জন্য ইউটিএফ -16 এবং ইউটিএফ -8-তে 3 বাইট প্রয়োজন। যে চরিত্রগুলির জন্য আরও বেশি প্রয়োজন তা খুব বিরল এবং / বা historicalতিহাসিক।
টিমভি

8
মনে রাখবেন যে জাপানি এবং চীনারা প্রতি শব্দ প্রতি সাধারণত কম অক্ষর ব্যবহার করে। আমি এমন একটি অ্যাপ্লিকেশন নিয়ে কাজ করি যা ইংরাজী, জাপানি এবং চাইনিজ ভাষায় বৃহত ভাষার ফাইল রয়েছে, সমস্ত ইউটিএফ -8 এ এনকোড করা আছে। চাইনিজ ফাইলটি আসলে সবচেয়ে ছোট, আর জাপানীজ ফাইলটি ইংলিশ মূলের চেয়ে প্রায় 15% বড়।
রোবট

3
ছাইপাঁশ. ইউটিএফ -16 এ দুটি বাইট লাগে এমন কিছু ইউটিএফ -8 এ 3 বাইটের বেশি লাগে না। ইউটিএফ -8 এর চারটি বাইট যা কিছু আছে তা ইউটিএফ -16 এ 4 বাইট। চাইনিজ চরিত্রগুলির কোনও "মিলিয়ন" নেই এবং স্পষ্টতই তারা 16 বিটের মধ্যে ফিট করে না।
gnasher729

1

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

ইউনিসাইড সহ সমস্যাগুলির উদাহরণ:

  • ইউটিএফ 8 একটি যুক্তিসঙ্গত হ্যাক, তবে বেশিরভাগ ইউটিএফ 16 ভিত্তিক সফ্টওয়্যার নষ্ট হয়েছে। ইউনিকোড সমর্থনকারী বেশিরভাগ উইন্ডোজ অ্যাপস নিজেই ওএস সহ ইউটিএফ 16 ব্যবহার করে। সর্বাধিক সাধারণ সমস্যাটি বেসিক প্লেনের চেয়ে বেশি সমর্থন করে না, যেমন বহু-শব্দযুক্ত অক্ষর characters

  • হান একীকরণ একটি অনিরাপদ বিপর্যয়। অতিরিক্ত মেটাডেটা ছাড়াই একক নথিতে জাপানি / চীনা / কোরিয়ান পাঠ্য মিশ্রিত করা অসম্ভব এবং কোন ফন্টটি ব্যবহার করা উচিত তা সনাক্ত করা শক্ত।

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

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

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

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


আপনার দাবির বিভিন্ন বর্ণের (জাপানি / কোরিয়ান / চীনা) মিশ্রণ অসম্ভব বলে মনে হয়েছে 15 বছরের পরে ইউনিকোড ৩.২ স্ট্যান্ডার্ড, ২০০২ সালে ইউনিকোড সমর্থন করে তারতম্য নির্বাচনকারী, কোডপয়েন্টগুলি যা হানের কোডপয়েন্টের পরে স্পষ্টভাবে কোন ফর্মটি নির্দিষ্ট করে প্রদর্শিত হবে। এছাড়াও সম্মিলনীয় অক্ষরগুলি দুটি বেস বর্ণগুলি (একটি °) এবং বিশেষ গ্লাইফস (å) এর সাথে "ডায়াক্রিটিকাল চিহ্নগুলি সংমিশ্রণ" হিসাবে চিহ্নিত করা হয়, তাদের বিপরীতভাবে রূপান্তর করার প্রক্রিয়াটি হ'ল "নরমালাইজেশন"। সুতরাং, না, ইউনিকোড মূলত ভাঙ্গা নয়।
থারস্টেন এস

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

0

হয়তো লেখার জন্য, তবে পড়ার জন্য নয়।

সেই সমস্ত এনকোডিংগুলি ব্যবহার করে এমন প্রচুর বিদ্যমান সামগ্রী রয়েছে এবং বেস 64 এর মতো কিছু এনকোডিং কোথাও যাচ্ছে না কারণ কিছু পাঠ্য প্রোটোকলগুলি বাইনারি ডেটা এম্বেড করার উপায় হিসাবে নির্দেশ দেয় ate

প্রকৃত সমস্যা হ'ল এনকোডিংগুলি স্বতঃ-সনাক্তকরণ যা সুরক্ষা গর্তগুলিতে বাড়ে। ইউটিএফ -7 এর মতো কিছু অস্পষ্ট এনকোডিংগুলি কেবল অদৃশ্য হয়ে দেখে আমার আপত্তি হবে না ।

স্বতঃ-সনাক্তকরণও বাইটগুলির নিঃসন্দেহে কাঠের স্ট্রিং দ্বারা উত্পাদিত সামগ্রীর সাথে খারাপভাবে মোকাবেলা করে।


7
বেস 64 কোনও অক্ষর এনকোডিং নয়।
dan04

0

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

  • আপনি যদি বেস 64 টেক্সটটি সংরক্ষণ / স্থানান্তর করে থাকেন তবে আপনার কেবল এএসসিআইআই প্রয়োজন এবং আপনি এমনকি ইমেলের মতো 7-বিট এনকোডযুক্ত প্রোটোকল নিয়েও যেতে পারেন। ইউটিএফ -8 এর অতিরিক্ত ওভারহেড অপ্রয়োজনীয়।
  • এই পুরানো অক্ষরের এনকোডিংগুলিতে বেশ কয়েকটি ফাইল এবং বিদ্যমান ডেটা তৈরি করা আছে, সেগুলি পড়তে সক্ষম হওয়া গুরুত্বপূর্ণ।

মনে রাখবেন যে এখানে 4 টি স্ট্যান্ডার্ড ইউটিএফ নরমালাইজেশন অ্যালগরিদম রয়েছে। যদি আপনি একাধিক কোডেপয়েন্ট অক্ষর সম্পর্কে উদ্বিগ্ন হন তবে আপনি দুটি নরমালাইজেশন অ্যালগরিদমগুলির মধ্যে একটি ব্যবহার করতে পারেন যা এগুলিকে সমতুল্য একক কোডপয়েন্টের অক্ষরে পরিণত হয়। তাদের মধ্যে পার্থক্যটি হ'ল লজিক্যাল সমতুল্যতা বনাম অক্ষরের শারীরিক সমতা with


1
ডাউনভোটাররা দয়া করে বলতে পারেন কেন তারা ডাউনটিভেট করেছিলেন?
বারিন লরিটস

3
আমি ডাউনওয়েট করিনি, তবে বেস 64 এর পুরো পয়েন্টটি কোনও পাঠ্য চ্যানেলে বাইনারি ডেটা স্থানান্তর করা। আপনি যদি সেই চ্যানেলে কী এনকোডিং ব্যবহার করতে চান তা চয়ন করতে পারলে আপনি কোনও পাঠ্য এনকোডিংটি ব্যবহার করবেন না। আপনার চ্যানেলটি সত্যই সরল ASCII হলেও, বেস 64 কেবলমাত্র 7 টির মধ্যে 6 টি বিট ব্যবহার করছে - এটি ইতিমধ্যে একটি উল্লেখযোগ্য ওভারহেড।
স্টিভ 314

আমি আশা করি কেউ কেবল বুলেট পয়েন্টগুলি পড়েনি। সেগুলি ইউটিএফ ব্যবহারের ব্যতিক্রম ছিল। এবং আপনি 8 টির মধ্যে 6 টি বাইট ব্যবহার করে বেস 64 সম্পর্কে ভুল। ASCII "অক্ষর" এর প্রথম সেটটি হ'ল প্রিন্টযোগ্য নিয়ন্ত্রণের অক্ষর, যা বেস 64 এর কয়েকটি অক্ষর 8 টির মধ্যে 7 ব্যবহার করতে বাধ্য করে। এটি উদ্দেশ্যমূলকভাবে উচ্চ বিট এড়িয়ে চলে কারণ because সমস্ত অক্ষর প্রতিটি কোড পৃষ্ঠাতে উপস্থিত থাকার গ্যারান্টিযুক্ত নয়, যখন 0-127-এর বর্ণগুলি।
বেরিন লরিটস

2
@ বেরিন - (1) না, তবে "আমি সম্মত" জিনিস বুলেট পয়েন্ট ছাড়া খুব বেশি নয়, এবং (2) বেস 64 এর 64 "সংখ্যা" রয়েছে। Digit৪ ডিজিটের মূল্য 6 বিট, কারণ 2 ^ 6 == 64। আপনি কীভাবে উপস্থাপন করেন যে একটি 7 বিট কোড-স্পেসে (বা 8 বিট, বা এমনকি 8 বাইট আপনার অবশ্যই প্রয়োজন) সেখানে কতটা ডেটা আছে তা থেকে পৃথক। মুদ্রণবিহীন অক্ষর ইত্যাদি এড়ানো ওভারহেডের কারণ - এর অর্থ এই নয় যে ওভারহেডের অস্তিত্ব নেই। বাইনারি ডেটার জন্য ডিজাইন করা একটি চ্যানেল চয়ন করুন এবং এটি ওভারহেডে নেই।
স্টিভ 314

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