এটা সব নির্ভর করে
ইউনিকোড স্ট্রিংগুলির তুলনা করা শক্ত:
টেক্সট প্রসেসিং সফ্টওয়্যারটিতে ইউনিকোড স্ট্রিং অনুসন্ধানগুলি এবং তুলনাগুলি বাস্তবায়নের জন্য সমতুল্য কোড পয়েন্টগুলির উপস্থিতি বিবেচনা করা উচিত। এই বৈশিষ্ট্যের অনুপস্থিতিতে, কোনও নির্দিষ্ট কোড পয়েন্ট ক্রমের সন্ধানকারী ব্যবহারকারীরা অন্য দৃশ্যমান পৃথক পৃথক গ্লিফগুলি খুঁজে পেতে অক্ষম হবেন যা আলাদা, তবে তাত্পর্যপূর্ণ সমতুল্য, কোড পয়েন্ট প্রতিনিধিত্ব করে।
দেখুন: http://en.wikedia.org/wiki/Unicode_equivalence
আপনি একটি মামলা অবশ ভাবে 2 ইউনিকোড স্ট্রিং তুলনা করার চেষ্টা এবং এটি কাজ করতে চান হয় সর্বত্র , আপনি একটি অসম্ভব সমস্যা আছে।
ক্লাসিক উদাহরণটি হ'ল তুর্কি আমি , যা বড় হলে İ হয় (বিন্দুটি লক্ষ্য করুন)
ডিফল্টরূপে। নেট ফ্রেমওয়ার্ক সাধারণত স্ট্রিং সম্পর্কিত ফাংশনগুলির জন্য কারেন্ট কালচার ব্যবহার করে , এর একটি খুব গুরুত্বপূর্ণ ব্যতিক্রম .Equals
একটি অর্ডিনাল (বাইট বাই বাইট) তুলনা ব্যবহার করে।
এটি কম্পিউটারের সংস্কৃতির উপর নির্ভর করে বিভিন্ন স্ট্রিং ফাংশনগুলিতে নকশার দ্বারা নেতৃত্ব দেয়।
তবুও, কখনও কখনও আমরা একটি "সাধারণ উদ্দেশ্য", কেস সংবেদনশীল, তুলনা চাই।
উদাহরণস্বরূপ, আপনি আপনার স্ট্রিং তুলনাটি একইরকম আচরণ করতে চাইতে পারেন, আপনার অ্যাপ্লিকেশনটি যে কম্পিউটারে ইনস্টল করা আছে তা বিবেচনা করেই।
এটি অর্জন করতে আমাদের কাছে 3 টি বিকল্প রয়েছে:
- সংস্কৃতিটি সুস্পষ্টভাবে সেট করুন এবং ইউনিকোড সমতুল্য বিধিগুলি ব্যবহার করে কোনও ক্ষেত্রে সংবেদনশীল তুলনা করুন।
- সংস্কৃতিটিকে ইনভেরিয়েন্ট সংস্কৃতিতে সেট করুন এবং ইউনিকোড সমতুল্য বিধিগুলি ব্যবহার করে সংবেদনশীল তুলনায় কেসটি সম্পাদন করুন।
- অর্ডিনালআইগনোরকেস ব্যবহার করুন যা ইনভেআরেন্ট কালচার ব্যবহার করে স্ট্রিংকে বড় আকারের করবে এবং তারপরে বাইট তুলনা করে একটি বাইট সম্পাদন করবে।
ইউনিকোড সমতুল্য নিয়মগুলি জটিল, যার অর্থ পদ্ধতি 1) বা 2) এর চেয়ে বেশি ব্যয়বহুল OrdinalIgnoreCase
। যে OrdinalIgnoreCase
কোনও বিশেষ ইউনিকোড সাধারনকরণ সম্পাদন করে না, এর অর্থ হ'ল কম্পিউটারের স্ক্রিনে একইভাবে রেন্ডার করা কিছু স্ট্রিংগুলি অভিন্ন হিসাবে বিবেচিত হবে না । উদাহরণস্বরূপ: "\u0061\u030a"
এবং "\u00e5"
উভয় রেন্ডার å তবে একটি সাধারণ তুলনায় ভিন্ন বিবেচনা করা হবে।
আপনি যেটি বেছে বেছে বেছে বেছে প্রয়োগ করছেন তার উপর নির্ভর করে।
- আমি যদি একটি লাইন অফ বিজনেস অ্যাপ লিখতাম যা কেবল তুর্কি ব্যবহারকারীরা ব্যবহার করতেন তবে আমি নিশ্চিতভাবে পদ্ধতি 1 ব্যবহার করবো।
- যদি আমি কেবল একটি সাধারণ "নকল" কেস সংবেদনশীল তুলনা প্রয়োজন, একটি ডিবিতে একটি কলামের নাম বলতে যা সাধারণত ইংরেজি হয় আমি সম্ভবত পদ্ধতি 3 ব্যবহার করতাম।
মাইক্রোসফ্টের স্পষ্ট নির্দেশিকা সহ তাদের সুপারিশগুলির সেট রয়েছে । তবে, এই সমস্যাগুলির কাছে যাওয়ার আগে ইউনিকোড সমতুল্যতার ধারণাটি বোঝা সত্যিই গুরুত্বপূর্ণ important
এছাড়াও, দয়া করে মনে রাখবেন যে অর্ডিনালআইগনোরেস একটি খুব বিশেষ ধরণের জন্তু, এটি কিছু অভিধানকে মিশ্রিত করার সাথে কিছু মিশ্রণ তুলনা করে বেছে নিচ্ছে le এটি বিভ্রান্তিকর হতে পারে।