সাধারণভাবে ইউটিএফ -8 কী?


129

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

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


230
W͢͢͝h͡o͢͡ ̸͢k̵͟n̴͘ǫw̸̛s͘ ̀́w͘͢ḩ̵a҉̡͢t ̧̕h́o̵r͏̵ferences̡ į̶lį̶e͟͟ ̶͝in͢ ͏t̕h̷̡͟e ͟͟d̛a͜r̕͡k̢̨ ̴h̴e͏a̷̢̡rt́͏ ̴̷͠ò̵̶f̸ u̧͘ní̛͜c͢͏o̷͏d̸͢e̡͝? ͞
23

@ অবসকিউররোবট আমি সত্যিই জানতে চাই যে এই অতিরিক্ত চিহ্নগুলির রাষ্ট্র থাকতে পারে কি না
ইওনিল

1
@ ইউনিল - ইউনিকোডের প্রসঙ্গে রাষ্ট্রের অর্থ কী তা আমি নিশ্চিত নই।
অস্পষ্টরবোট

@ObscureRobot উদাহরণস্বরূপ, এটি মত কিছু কোড পয়েন্ট: (begin curved line) (char1) (char2) … (charN) (end curved line)বরং এর চেয়ে: (curved line marker prefix) (char1) (curved line marker prefix) (char2) (curved line marker prefix) (char2)। অন্য কথায়, ন্যূনতম ইউনিট যা রেন্ডার করা যায়?
eonil

2
এটি নিজেই একটি ভাল প্রশ্নের মতো শোনাচ্ছে।
অস্পষ্টরবোট

উত্তর:


181

ইউনিকোড নরমালাইজেশন সম্পর্কে আপনি কখনই জানতে চাননি

ক্যানোনিকাল নরমালাইজেশন

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

কখন ব্যবহার করতে হবে

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

ক্যানোনিকাল নরমালাইজেশন 2 টি আকারে আসে: এনএফডি এবং এনএফসি। দুটি এই অর্থে সমান যে কেউ কোনও ক্ষতি ছাড়াই এই দুটি রূপের মধ্যে রূপান্তর করতে পারে। এনএফসি এর অধীনে দুটি স্ট্রিং তুলনা করা সর্বদা NFD এর সাথে তাদের তুলনা করার মতো ফলাফল দেয়।

NFD

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

যদি আপনি কেবল দুটি স্ট্রিংয়ের তুলনা করতে চান যা ইতিমধ্যে স্বাভাবিক করা যায় না, তবে এটি আপনার পছন্দসই স্বাভাবিককরণ ফর্মটি যদি না জেনে থাকে যে আপনার সামঞ্জস্যতা স্বাভাবিককরণের প্রয়োজন হয়।

NFC এর

এনএফডি অ্যালগরিদম চালানোর পরে যখন সম্ভব হয় কোড পয়েন্ট পুনরায় সংযুক্ত করে। এটি কিছুটা বেশি সময় নেয় তবে সংক্ষিপ্ত স্ট্রিংয়ের ফলাফল।

সামঞ্জস্যতা নরমালাইজেশন

ইউনিকোডে এমন অনেকগুলি অক্ষর অন্তর্ভুক্ত রয়েছে যা সত্যিকারের অন্তর্ভুক্ত নয় তবে তারা উত্তরাধিকার চরিত্রের সেটগুলিতে ব্যবহৃত হয়েছিল। ইউনিকোড এগুলি যোগ করে সেই অক্ষর সেটগুলিতে পাঠ্যটিকে ইউনিকোড হিসাবে প্রসেস করার অনুমতি দেয় এবং তারপরে বিনা ক্ষতিতে ফিরে রূপান্তরিত হয়।

সামঞ্জস্যতা নরমালাইজেশন এগুলিকে "বাস্তব" অক্ষরের সাথে সম্পর্কিত অনুক্রমগুলিতে রূপান্তরিত করে এবং ক্যানোনিকাল নরমালাইজেশন সম্পাদন করে। সামঞ্জস্যতা স্বাভাবিককরণের ফলাফলগুলি মূলগুলির সাথে একরকম নাও দেখাতে পারে।

অক্ষরগুলির মধ্যে ফর্ম্যাটিংয়ের তথ্য অন্তর্ভুক্ত হয় না এমনগুলির সাথে প্রতিস্থাপন করা হয়। উদাহরণস্বরূপ চরিত্রটি রূপান্তরিত হয় 9। অন্যদের বিন্যাসের পার্থক্য জড়িত না। উদাহরণস্বরূপ রোমান অঙ্কের অক্ষরটি নিয়মিত অক্ষরে রূপান্তরিত হয়IX

স্পষ্টতই, একবার এই রূপান্তরটি সম্পাদিত হয়ে গেলে, ক্ষতি ছাড়াই মূল চরিত্রের সেটটিতে রূপান্তর করা আর সম্ভব হয় না।

কখন ব্যবহার করতে হবে

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

একটি দুর্দান্ত ব্যবহারের কেস একটি অনুসন্ধান ইঞ্জিন হবে যেহেতু আপনি সম্ভবত 9মেলে এমন কোনও অনুসন্ধান চান

একটি জিনিস যা আপনার সম্ভবত করা উচিত নয় তা হ'ল ব্যবহারকারীর সাথে সামঞ্জস্যতা স্বাভাবিককরণ প্রয়োগের ফলাফল প্রদর্শন করা।

NFKC / NFKD

সামঞ্জস্যতা স্বাভাবিককরণ ফর্মটি এনএফকেডি এবং এনএফকেসি দুটি রূপে আসে forms এনএফডি এবং সি এর মধ্যে তাদের একই সম্পর্ক রয়েছে have

এনএফকেসি-তে যে কোনও স্ট্রিং সহজাতভাবে এনএফসি-তেও হয় এবং এনএফকেডি এবং এনএফডি-র ক্ষেত্রেও একই থাকে। এইভাবে NFKD(x)=NFD(NFKC(x)), এবং NFKC(x)=NFC(NFKD(x)), ইত্যাদি

উপসংহার

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


42
সংক্ষিপ্তসারগুলি কীসের জন্য দাঁড়িয়ে আছে তা মনে রাখার জন্য একটি দ্রুত রেফারেন্স: এনএফ = নরমালাইজড ফর্ম ডি = ডিকম্পোজ (ডিকম্প্রেস) , সি = কমপোজ (কমপ্রেস) কে = সামঞ্জস্য (যেহেতু "সি" নেওয়া হয়েছিল)।
মাইক স্প্রস

12
আপনি সর্বদা প্রথম জিনিস হিসাবে ইনপুটটিতে থাকা সমস্ত স্ট্রিং এনএফডি করতে চান এবং এনএফসি সমস্ত স্ট্রিং আউটপুটটিকে সর্বশেষ জিনিস হিসাবে দেখায়। এটি সর্বজনবিদিত।
tchrist

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

@ কেভিন: হ্যাঁ, এনএফডি ইন এবং এনএফসি আউট সিঙ্গলেটগুলি ধ্বংস করবে। আমি নিশ্চিত না যে কেউ সেগুলি সম্পর্কে যত্নশীল, তবে সম্ভবত।
tchrist

2
আপনি এটি ভাবতে পারেন, তবে সংযুক্তি থেকে: "একটি ইউনিকোড স্ট্রিংকে প্রদত্ত ইউনিকোড নরমালাইজেশন ফর্মে রূপান্তরিত করার জন্য প্রথম পদক্ষেপটি স্ট্রিংটিকে সম্পূর্ণরূপে পচে যাওয়া"। এমনকি এনএফসি চলমান ওয়েওন, কিউ-কারন প্রথমে কিউ + কারন হয়ে উঠতেন, এবং পুনরায় রচনা করতে পারেননি, কারণ স্থায়িত্বের নিয়মগুলি নতুন রচনাটির ম্যাপিং যোগ করা নিষিদ্ধ করে। এনএফসি কার্যকরভাবে হিসাবে সংজ্ঞায়িত করা হয় NFC(x)=Recompose(NFD(x))
কেভিন ক্যাথকার্ট

40

কিছু অক্ষর, উদাহরণস্বরূপ একটি অ্যাকসেন্টের সাথে একটি চিঠি (বলে, é) দুটি উপায়ে উপস্থাপন করা যায় - একটি একক কোড পয়েন্ট U+00E9বা সমতল অক্ষর এবং তার পরে সম্মিলিত উচ্চারণের চিহ্ন U+0065 U+0301। সাধারণ স্বাভাবিককরণ সর্বদা প্রতিনিধিত্ব করতে এগুলির মধ্যে একটি চয়ন করবে (এনএফডির জন্য একক কোড পয়েন্ট, এনএফডির সম্মিলন ফর্ম)।

বেস অক্ষরের একাধিক ক্রম দ্বারা চিহ্নিত করা যেতে পারে এবং চিহ্নগুলিকে একত্রিত করে ("s, নীচে বিন্দু, উপরে উপরে বিন্দু" বনাম উপরে বিন্দু রাখার পরে নীচে বিন্দু বা নীচে ইতিমধ্যে বিন্দুগুলির একটিতে থাকা বেস অক্ষর ব্যবহার করে), এনএফডি করবে এগুলির মধ্যে একটিও চয়ন করুন (নীচে প্রথমে যায়, যেমনটি ঘটে)

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

আরও তথ্যের জন্য http://unicode.org/report/tr15/ দেখুন ।


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

13

সাধারণ ফর্মগুলি (ইউনিকোডের, ডাটাবেসের নয়) প্রাথমিকভাবে (একচেটিয়া?) অক্ষরগুলির সাথে ডায়াক্রিটিকাল চিহ্ন রয়েছে deal ইউনিকোড "বিল্ট ইন" ডায়্রিটিকাল চিহ্নগুলির সাথে কিছু অক্ষর সরবরাহ করে যেমন ইউ + 00 সি 0, "ল্যাটিন ক্যাপিটাল এ উইথ গ্রেভ"। একটি "ল্যাটিন ক্যাপিটাল এ" (U + 0041) "মিলিত গ্রাভ অ্যাকসেন্ট" (U + 0300) দিয়ে একই চরিত্রটি তৈরি করা যেতে পারে That এর অর্থ যদিও দুটি ক্রম একই ফলস্বরূপ অক্ষর তৈরি করে, বাইট-বাই-বাইট তুলনা তাদের সম্পূর্ণ আলাদা বলে দেখায়।

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

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

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


সুতরাং এটি সেই অংশ যেখানে গ্রাফিম ফাংশনগুলি এর মধ্যে আসে। চরিত্রটি কেবল এএসসিআইআই-এর চেয়ে বেশি বাইট নয় - একাধিক সিকোয়েন্সগুলি কী একক চরিত্র হতে পারে? ( এমবি স্ট্রিং ফাংশনগুলির বিপরীতে ))
এক্সনক্রস

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

@ র্যান্ডম 832: ওফ, ঠিক আছে। গত দু'বছর ধরে যখন আমি এটির সাথে কাজ করি নি তখন স্মৃতি থেকে যাওয়ার চেয়ে আমার আরও ভাল জানা উচিত।
জেরি কফিন

@ র্যান্ডম 832 এটি সত্য নয়। আপনার "মোটামুটি" খুব বাইরে আছে। Gra এবং two দুটি গ্রাফিক্স বিবেচনা করুন ȭ̲ এগুলির প্রতিটি লেখার অনেকগুলি উপায় রয়েছে, যার মধ্যে হ'ল এনএফসি এবং একটি এনএফডি, তবে অন্যগুলিও বিদ্যমান। এটি কোনও ক্ষেত্রেই কেবল একটি কোড পয়েন্ট নয়। প্রথমটির জন্য এনএফডি হয় "o\x{332}\x{303}\x{304}", এবং এনএফসি হয় "\x{22D}\x{332}"। দ্বিতীয় এনএফডি জন্য "o\x{332}\x{304}\x{303}"এবং এনএফসি হয় "\x{14D}\x{332}\x{303}"। যাইহোক, অনেকগুলি অ-প্রচলিত সম্ভাবনা রয়েছে যা এইগুলির সাথে স্বতঃসিদ্ধ সমান equivalent সাধারণকরণ ক্যানোনিকালি সমতুল্য গ্রাফিক্সের বাইনারি তুলনা করতে দেয়।
tchrist

5

দুটি ইউনিকোড স্ট্রিং যদি স্বতঃস্ফূর্ত হয় তবে স্ট্রিংগুলি একই রকম হয়, কেবলমাত্র বিভিন্ন ইউনিকোড ক্রম ব্যবহার করে। উদাহরণস্বরূপ either অক্ষরটি ব্যবহার করে either বা A এবং of এর সংমিশ্রণটি উপস্থাপন করা যেতে পারে ◌̈

স্ট্রিংগুলি যদি কেবল সামঞ্জস্যের সমতুল্য হয় তবে স্ট্রিংগুলি একই রকম হয় না তবে কয়েকটি প্রসঙ্গে সেগুলি একই হতে পারে। যেমন f এফএফ হিসাবে একই বিবেচনা করা যেতে পারে।

সুতরাং, আপনি যদি স্ট্রিংগুলির সাথে তুলনা করছেন তবে আপনার নীতিগত সমতুল্যতা ব্যবহার করা উচিত, কারণ সামঞ্জস্যের সমতুল্যতা বাস্তব সমতুল্য নয়।

তবে আপনি যদি স্ট্রিংগুলির একটি সেট বাছাই করতে চান তবে এটি সামঞ্জস্যতার সমতাটি ব্যবহার করার মতো বোধগম্য হতে পারে কারণ এটি প্রায় অভিন্ন।


5

এটি আসলে মোটামুটি সহজ। ইউটিএফ -8 আসলে একই "চরিত্র" এর বিভিন্ন আলাদা উপস্থাপনা রয়েছে। (আমি বাইট-ওয়াইস হিসাবে কোটগুলিতে অক্ষর ব্যবহার করি সেগুলি পৃথক, তবে কার্যত তারা একই are লিঙ্কযুক্ত নথিতে একটি উদাহরণ দেওয়া আছে।

"Ç" অক্ষরটি বাইট সিকোয়েন্স 0xc387 হিসাবে উপস্থাপন করা যেতে পারে। তবে এটি একটি C(0x43) এর পরে বাইট সিকোয়েন্স 0xcca7 দ্বারাও প্রতিনিধিত্ব করতে পারে । সুতরাং আপনি বলতে পারেন যে 0xc387 এবং 0x43cca7 একই চরিত্র। যে কারণে কাজ করে, তা হল 0xcca7 একটি সংমিশ্রণ চিহ্ন; এর অর্থ এটি চরিত্রটি গ্রহণের আগে (একটি Cএখানে) নিয়ে যায় এবং এটি পরিবর্তন করে।

এখন, যতটা না পার্থক্য তুলনামূলক বনাম সামঞ্জস্য সমতা মধ্যে পার্থক্য, আমাদের সাধারণ অক্ষর তাকান প্রয়োজন।

অক্ষরের 2 প্রকার রয়েছে, সেগুলি মূল্যের মাধ্যমে অর্থ বোঝায় এবং অন্য চরিত্রগুলি নিয়ে এটি পরিবর্তন করে। 9 একটি অর্থবহ চরিত্র। একটি সুপার স্ক্রিপ্ট that এর অর্থ গ্রহণ করে এবং উপস্থাপনার মাধ্যমে এটিকে পরিবর্তন করে। সুতরাং সাধারণভাবে তাদের বিভিন্ন অর্থ রয়েছে তবে তারা এখনও বেস চরিত্রটি উপস্থাপন করে।

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


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

4

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

চিত্র 1 এবং 2 সমতা দুই ধরণের ভাল উদাহরণ সরবরাহ করে। সামঞ্জস্যতা সমতুল্যের অধীনে, দেখে মনে হচ্ছে এটি উপ-এবং সুপার-স্ক্রিপ্ট আকারে একই সংখ্যার সমান তুলনা করবে। তবে আমি নিশ্চিত নই যে একই সমস্যাটি যেমন মুছে ফেলা আরবিক ফর্ম বা ঘোরানো অক্ষরগুলির মতো solve

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


1

তুলনামূলক স্ট্রিংগুলির সমস্যা : বেশিরভাগ অ্যাপ্লিকেশনগুলির উদ্দেশ্যে সমতুল্য সামগ্রীর সাথে দুটি স্ট্রিংয়ে পৃথক পৃথক চরিত্রের ক্রম থাকতে পারে।

দেখুন ইউনিকোড এর ক্যানোনিকাল সমানতা যদি তুলনা অ্যালগরিদম সহজ (বা ফাস্ট হতে হবে), ইউনিকোড সমানতা সঞ্চালিত হয় না। এই সমস্যাটি ঘটে থাকে, উদাহরণস্বরূপ, এক্সএমএল প্রমিত তুলনায়, দেখুন http://www.w3.org/TR/xML-c14n

এই সমস্যা এড়াতে ... কী স্ট্যান্ডার্ড ব্যবহার করা উচিত? "প্রসারিত UTF8" বা "কমপ্যাক্ট UTF8"?
"Ç" বা "সি + ◌̧" ব্যবহার করবেন?

ডাব্লু 3 সি এবং অন্যান্য (যেমন ফাইলের নাম ) "ক্যানোনিকাল হিসাবে রচিত" ("সর্বাধিক কমপ্যাক্ট" ছোট ছোট স্ট্রিংগুলির সি বিবেচনা করুন) ব্যবহার করার পরামর্শ দেয় ... সুতরাং,

স্ট্যান্ডার্ড সি ! সন্দেহ এনএফসি ব্যবহার করুন

আন্তঃব্যবহারযোগ্যতা এবং "কনফিগারেশন ওভার কনফিগারেশন" পছন্দগুলির জন্য , সুপারিশটি হ'ল এনএফসি- র ব্যবহার , বাহ্যিক স্ট্রিংগুলিকে "ক্যানোনাইজ" করতে to ক্যানোনিকাল এক্সএমএল সঞ্চয় করতে, উদাহরণস্বরূপ, এটি "ফরএম_সি" এ সঞ্চয় করুন। ওয়েব ওয়ার্কিং গ্রুপে ডাব্লু 3 সি এর সিএসভি এনএফসি (বিভাগ 7.2) পুনরুদ্ধার করে

PS: de "FORM_C" বেশিরভাগ লাইব্রেরিতে ডিফল্ট ফর্ম । যাত্রা। পিএইচপি'র নরমালাইজারে.অনর্মালাইজড ()


"শব্দটি সি-ক্যানোনিকাল আকারে রয়েছে" (এনএফসি রূপান্তরের ফলস্বরূপ) এবং একটি রূপান্তরকারী অ্যালগরিদম ব্যবহার করা হয়েছে তা বলার জন্য " থ্রো শব্দটি" রচনা ফর্ম "( FORM_C) উভয়কেই ব্যবহার করা হয় ... দেখুন HTTP: //www.macchiato.com/unicode/nfc-faq

(...) নিম্নলিখিত ক্রমগুলির প্রতিটি (প্রথম দুটি একক চরিত্রের ক্রম) একই অক্ষরকে উপস্থাপন করে:

  1. ইউ + 00 সি 5 (Å) উপরের রিংয়ের সাথে ল্যাটিন ক্যাপিটাল লেটার
  2. U + 212B (Å) অ্যাংস্ট্রোম সাইন
  3. U + 0041 (A) ল্যাটিন ক্যাপিটাল লেটার A + U + 030A (̊) উপরের রিংয়ের মিশ্রণ

এই সিকোয়েন্সগুলি ক্যানোনিক্যালি সমতুল্য বলা হয়। এই ফর্মগুলির প্রথমটিকে এনএফসি বলা হয় - নরমালাইজেশন ফর্ম সি এর জন্য, যেখানে সিটি কম্পোসেশনের জন্য । (...) একটি স্ট্রিং এসকে এনএফসি ফর্মে রূপান্তরিত করে এমন একটি ফাংশন সংক্ষেপে বলা যেতে পারে toNFC(S), যখন এনএফসি-তে এস রয়েছে কিনা তা পরীক্ষা করে এমনটি সংক্ষেপিত হয় isNFC(S)


দ্রষ্টব্য: সামান্য স্ট্রিংগুলির (সাধারণ খাঁটি ইউটিএফ -8 বা এক্সএমএল-সত্তা রেফারেন্স) সাধারণকরণের পরীক্ষার জন্য, আপনি এই পরীক্ষাটি ব্যবহার করতে পারেন / অনলাইন রূপান্তরকে সাধারণীকরণ করতে পারেন ।


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

হাই @ ইউজারফিউজার সম্ভবত আপনার অ্যাপ্লিকেশন সম্পর্কে একটি অবস্থান প্রয়োজন: আপনার পাঠ্যের তুলনা করা বা মানক করা ? আমার পোস্টটি এখানে অ্যাপ্লিকেশনগুলিকে "মানীয়করণ" সম্পর্কে প্রায়। PS: যখন সমস্ত বিশ্ব মান ব্যবহার করে, তুলনা সমস্যাটি অদৃশ্য হয়ে যায়।
পিটার ক্রাউস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.