এই স্ট্রিংয়ের দৈর্ঘ্য এটির মধ্যে বর্ণগুলির সংখ্যার চেয়ে দীর্ঘ কেন?


145

এই কোড:

string a = "abc";
string b = "A𠈓C";
Console.WriteLine("Length a = {0}", a.Length);
Console.WriteLine("Length b = {0}", b.Length);

আউটপুট:

Length a = 3
Length b = 4

কেন? কেবলমাত্র আমি ভাবতে পারি যে চীনা চরিত্রটি 2 বাইট দীর্ঘ এবং .Lengthপদ্ধতিটি বাইট গণনাটি ফিরিয়ে দেয়।


10
আমি কীভাবে জানলাম যে এটি শিরোনামটি দেখার থেকে একটি সারোগেট জুটির সমস্যা ছিল। আহ, ভাল 'ওল সিস্টেম System গ্লোবালাইজেশন হ'ল আপনার মিত্র!
ক্রিস সাইরেফাইস

9
এটি ইউটিএফ -16 এ 4 বাইট দীর্ঘ, 2 নয়
ফুক্লভ

চরের দশমিক মান 𠈓হ'ল 131603, এবং চরগুলি স্বাক্ষরবিহীন বাইটস হিসাবে, এর অর্থ হল আপনি 4 টির পরিবর্তে 2 টি অক্ষরে এই মানটি অর্জন করতে পারবেন (স্বাক্ষরযুক্ত 16 বিট মান সর্বোচ্চ 65535 (বা 65536 প্রকরণ) and 65536 * 2 (131072) নয় বরং 65536 * 65536 প্রকরণ (4,294,967,296, কার্যকরভাবে একটি 32 বিটের মান) এর সর্বাধিক সংখ্যক পরিবর্তনের জন্য
GMasucci

3
@ জিএমএএসুসি: এটি ইউটিএফ -16 এ 2 টি অক্ষর, তবে 4 বাইট, কারণ কোনও ইউটিএফ 16 অক্ষর 2 বাইট আকারের, অন্যথায় এটি 65536 বিভিন্নতা সংরক্ষণ করতে পারে না, তবে কেবল 256.
কায়সারলুদি

4
আমি দুর্দান্ত নিবন্ধটি পড়ার পরামর্শ দিচ্ছি 'নিখুঁত ন্যূনতম প্রতিটি সফ্টওয়্যার বিকাশকারীকে অবশ্যই, ইউনিকোড এবং চরিত্রের সেটগুলি সম্পর্কে ধনাত্মকভাবে
ItMe

উত্তর:


232

প্রত্যেকে প্রত্যেকে পৃষ্ঠের উত্তর দিচ্ছে, তবে এর আরও গভীর যুক্তি রয়েছে: "অক্ষর" সংখ্যাটি একটি জটিল-সংজ্ঞা দেওয়া প্রশ্ন এবং গণনা করা আশ্চর্যরকম ব্যয়বহুল হতে পারে, যেখানে একটি দৈর্ঘ্যের সম্পত্তি দ্রুত হওয়া উচিত।

এটি সংজ্ঞায়িত করা কেন কঠিন? ঠিক আছে, কয়েকটি বিকল্প রয়েছে এবং অন্যগুলির চেয়ে সত্যিকার অর্থে কোনওটিই বৈধ নয়:

  • কোড ইউনিটগুলির সংখ্যা (বাইটস বা অন্যান্য স্থির আকারের ডেটা টুকরো; সি # এবং উইন্ডোজ সাধারণত ইউটিএফ -16 ব্যবহার করে তাই এটি দ্বি-বাইট টুকরো সংখ্যা ফেরৎ দেয়) অবশ্যই প্রাসঙ্গিক, কারণ কম্পিউটারটিকে এখনও সেই ফর্মের ডেটা নিয়ে কাজ করতে হবে অনেকগুলি উদ্দেশ্যে (উদাহরণস্বরূপ, কোনও ফাইলকে লেখার জন্য অক্ষরের চেয়ে বাইটগুলি যত্ন করে)

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

  • এমনকি গ্রাফিমের সংখ্যাও মুদ্রিত স্ট্রিংয়ের দৈর্ঘ্যের সমান নয়, যা অন্যান্য বিষয়গুলির মধ্যে ফন্টের উপর নির্ভর করে এবং যেহেতু কয়েকটি অক্ষর অনেকগুলি ফন্টে (কার্নিং) কিছু ওভারল্যাপ দিয়ে মুদ্রিত হয়, তাই পর্দার একটি স্ট্রিংয়ের দৈর্ঘ্য অবশ্যই গ্রাফিমের দৈর্ঘ্যের যোগফলের সমান নয়!

  • কিছু ইউনিকোড পয়েন্ট প্রচলিত অর্থে এমনকি অক্ষর নয়, বরং একরকম নিয়ন্ত্রণ মার্কার। বাইট অর্ডার মার্কারের মতো বা ডান থেকে বাম সূচক Like এই গণনা?

সংক্ষেপে, একটি স্ট্রিংয়ের দৈর্ঘ্য আসলে একটি হাস্যকর জটিল প্রশ্ন এবং এটি গণনা করাতে অনেকগুলি সিপিইউ সময় লাগাতে পারে পাশাপাশি ডাটা টেবিলগুলিও।

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

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

সে কারণেই "কারণ নথির বিবরণ তাই বলে" এর পৃষ্ঠতলের ব্যাখ্যা ছাড়িয়েও bদৈর্ঘ্য রয়েছে 4


9
মূলত '। দৈর্ঘ্য' বেশিরভাগ কোডারদের মনে হয় এটি নয়। সম্ভবত আরও নির্দিষ্ট বৈশিষ্ট্যগুলির একটি সেট থাকা উচিত (উদাঃ গ্লাইফকাউন্ট) এবং দৈর্ঘ্য অপ্রচলিত হিসাবে চিহ্নিত!
redcalx

8
@ লকস্টার আমি সম্মত, তবে Lengthঅ্যারেগুলির সাথে সাদৃশ্য বজায় রাখতে অপ্রচলিত হওয়া উচিত বলে মনে করবেন না ।
Kroltan

2
@ লকস্টার এটি অপ্রচলিত হওয়া উচিত নয়। অজগরটি অনেক বোঝায় এবং কেউ এটিকে প্রশ্ন করে না।
সিমোনজ্যাক

1
আমি মনে করি। দৈর্ঘ্যটি অনেক অর্থবোধ করে এবং একটি প্রাকৃতিক সম্পত্তি, যতক্ষণ আপনি বুঝতে পারবেন যে এটি কী এবং কেন এটি সেভাবে। তারপরে এটি অন্য কোনও অ্যারের মতো কাজ করে (কিছু ভাষা ডি এর মতো, একটি স্ট্রিং আক্ষরিক অর্থে ভাষাটি যতটা সম্পর্কিত এবং এটি সত্যিই ভাল কাজ করে)
অ্যাডাম ডি রুপ্প

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

62

থেকে ডকুমেন্টেশন এর String.Lengthসম্পত্তি:

দৈর্ঘ্যের বৈশিষ্ট্যটি এই পরিস্থিতিতে চর অবজেক্টের সংখ্যা প্রদান করে, ইউনিকোডের অক্ষরের সংখ্যা নয়। কারণটি হ'ল কোনও ইউনিকোড চরিত্রটি একাধিক চরের দ্বারা প্রতিনিধিত্ব করতে পারে । প্রতিটি চরের পরিবর্তে প্রতিটি ইউনিকোড চরিত্রের সাথে কাজ করতে সিস্টেম.গ্লোবালাইজেশন.স্ট্রিংইনফো ক্লাসটি ব্যবহার করুন ।


3
জাভা একইভাবে আচরণ করে (এছাড়াও 4 টি মুদ্রণ করে String b), কারণ এটি চর অ্যারেতে ইউটিএফ -16 প্রতিনিধিত্ব করে। এটি ইউটিএফ -8-তে একটি 4 বাইট চরিত্র।
মাইকেল

32

1 ইন ইনডেক্সে আপনার চরিত্রটি "A𠈓C"একটি সুরোগেট পেয়ার

মনে রাখার মূল বিষয়টি হ'ল সারোগেট জোড়গুলি 32-বিট একক অক্ষর উপস্থাপন করে।

আপনি এই কোডটি চেষ্টা করতে পারেন এবং এটি ফিরে আসবে True

Console.WriteLine(char.IsSurrogatePair("A𠈓C", 1));

চর.আইএসসুরোগেট পেয়ার পদ্ধতি (স্ট্রিং, ইন্ট 32)

trueযদি প্যারামিটারে পজিশন সূচক এবং সূচক + 1 এ সংলগ্ন অক্ষর এবং পজিশন সূচকে অক্ষরের সংখ্যাসূচক মান U + D800 থেকে U + DBFF এর মধ্যে থাকে, এবং অবস্থান সূচক + 1 এর অক্ষরটির সংখ্যাসূচক মানটি U থেকে থাকে + ডিসি ইউ + ডিএফএফএফ এর মাধ্যমে; অন্যথায় false,।

এটি স্ট্রিংয়ে আরও ব্যাখ্যা করা হয়েছে en দৈর্ঘ্য সম্পত্তি:

দৈর্ঘ্যের বৈশিষ্ট্যটি এই পরিস্থিতিতে চর অবজেক্টের সংখ্যা প্রদান করে, ইউনিকোডের অক্ষরের সংখ্যা নয়। কারণটি হ'ল কোনও ইউনিকোড চরিত্রটি একাধিক চরের দ্বারা প্রতিনিধিত্ব করতে পারে। প্রতিটি চরের পরিবর্তে প্রতিটি ইউনিকোড চরিত্রের সাথে কাজ করতে সিস্টেম.গ্লোবালাইজেশন.স্ট্রিংইনফো ক্লাসটি ব্যবহার করুন।


24

অন্যান্য উত্তরগুলি যেমনটি উল্লেখ করেছে, 3 টি দৃশ্যমান চরিত্র এমনকি তারা 4 টি charঅবজেক্টের সাথে প্রতিনিধিত্ব করে। যার কারণটি Length4 এবং 3 নয়।

এমএসডিএন জানিয়েছে যে

দৈর্ঘ্যের বৈশিষ্ট্যটি এই পরিস্থিতিতে চর অবজেক্টের সংখ্যা প্রদান করে, ইউনিকোডের অক্ষরের সংখ্যা নয়।

তবে আপনি যা জানতে চান তা হ'ল "পাঠ্য উপাদানগুলির সংখ্যা" এবং Charআপনি StringInfoশ্রেণিটি ব্যবহার করতে পারবেন এমন বস্তুর সংখ্যা নয় ।

var si = new StringInfo("A𠈓C");
Console.WriteLine(si.LengthInTextElements); // 3

আপনি প্রতিটি পাঠ্য উপাদান এর মতো করেও গণনা করতে পারেন

var enumerator = StringInfo.GetTextElementEnumerator("A𠈓C");
while(enumerator.MoveNext()){
    Console.WriteLine(enumerator.Current);
}

ব্যবহার foreachস্ট্রিং উপর দুই মধ্যম "চিঠি" বিভক্ত হবে charবস্তু এবং মুদ্রিত ফলাফলের স্ট্রিং মিলা করা হবে না।


20

কারণ Lengthসম্পত্তিটি চারটি অবজেক্টের সংখ্যা দেয়, ইউনিকোডের অক্ষরের সংখ্যা নয়। আপনার ক্ষেত্রে, ইউনিকোডের একটি অক্ষর একাধিক চর অবজেক্ট (সুরোগেটপায়ার) দ্বারা উপস্থাপিত হয়।

দৈর্ঘ্যের বৈশিষ্ট্যটি এই পরিস্থিতিতে চর অবজেক্টের সংখ্যা প্রদান করে, ইউনিকোডের অক্ষরের সংখ্যা নয়। কারণটি হ'ল কোনও ইউনিকোড চরিত্রটি একাধিক চরের দ্বারা প্রতিনিধিত্ব করতে পারে। প্রতিটি চরের পরিবর্তে প্রতিটি ইউনিকোড চরিত্রের সাথে কাজ করতে সিস্টেম.গ্লোবালাইজেশন.স্ট্রিংইনফো ক্লাসটি ব্যবহার করুন।


1
এই উত্তরে আপনার "অক্ষর" এর অস্পষ্ট ব্যবহার রয়েছে। আমি কমপক্ষে প্রথমটিকে সুনির্দিষ্ট পরিভাষা দিয়ে প্রতিস্থাপন করার পরামর্শ দিচ্ছি।
অরবিটে

1
ধন্যবাদ. অস্পষ্টতা স্থির করে।
যুবাল ইতজচকভ

10

অন্যরা যেমন বলেছে, এটি স্ট্রিংয়ের অক্ষরের সংখ্যা নয়, চর অবজেক্টের সংখ্যা। অক্ষরটি হ'ল কোড পয়েন্ট U + 20213। যেহেতু মানটি 16-বিট চরের প্রকারের সীমার বাইরে, এটি ইউআরএফএফ -16 এ সারোগেট জোড়া হিসাবে এনকোডেড রয়েছেD840 DE13

অক্ষরগুলির দৈর্ঘ্য পাওয়ার উপায়টি অন্যান্য উত্তরে উল্লিখিত ছিল। তবে এটি যত্ন সহ ব্যবহার করা উচিত কারণ ইউনিকোডে কোনও চরিত্র উপস্থাপনের বিভিন্ন উপায় থাকতে পারে। "à" 1 টি রচিত অক্ষর বা 2 টি অক্ষর (একটি + ডায়াক্রিটিক্স) হতে পারে। টুইটারের ক্ষেত্রে সাধারণকরণের প্রয়োজন হতে পারে

আপনার এটি অবশ্যই সর্বনিম্ন ন্যূনতম প্রতিটি সফ্টওয়্যার বিকাশকারী পড়তে
হবে, ইউনিকোড এবং চরিত্রের সেটগুলি সম্পর্কে ইতিবাচকভাবে অবশ্যই জানতে হবে (কোনও বাহানা নেই!)


6

এটি length()কেবলমাত্র ইউনিকোড কোড পয়েন্টগুলির জন্য কাজ করে যা এর চেয়ে বড় নয় U+FFFF। কোড পয়েন্টগুলির এই সেটটি বেসিক বহুভাষিক সমতল হিসাবে পরিচিত (বিএমপি) এবং মাত্র 2 বাইট ব্যবহার করে।

এর বাইরে ইউনিকোড কোড পয়েন্টগুলি BMPইউটিএফ -16 এ 4 বাইট সারোগেট জোড়া ব্যবহার করে প্রতিনিধিত্ব করা হয়।

অক্ষরের সংখ্যা সঠিকভাবে গণনা করতে (3), ব্যবহার করুন StringInfo

StringInfo b = new StringInfo("A𠈓C");
Console.WriteLine(string.Format("Length 2 = {0}", b.LengthInTextElements));

6

ঠিক আছে, নেট এবং সি # তে সমস্ত স্ট্রিং ইউটিএফ -16 এলই হিসাবে এনকোড করা আছে । ক stringঅক্ষরের ক্রম হিসাবে সংরক্ষণ করা হয়। প্রতিটিতে char2 বাইট বা 16 বিটের স্টোরেজ encapsulates।

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

প্রতিটি কোড পয়েন্ট কম্পিউটার দ্বারা অভ্যন্তরীণ উপস্থাপনের জন্য বাইনারি মধ্যে এনকোড করা প্রয়োজন। হিসাবে বলা হয়েছে, প্রতিটি charস্টোর 2 বাইট। নীচে বা নীচের কোড পয়েন্টগুলি U+FFFFএকটি একক মধ্যে সংরক্ষণ করা যেতে পারে char। উপরের কোড পয়েন্টগুলি U+FFFFএকটি একক কোড পয়েন্ট উপস্থাপন করতে দুটি অক্ষর ব্যবহার করে একটি সারোগেট জুটি হিসাবে সংরক্ষণ করা হয়।

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


গর্ভনাটিকা

সুতরাং, যখন রেন্ডারটি একই রকম দেখায় সেই স্ট্রিংগুলি আসলে বিভিন্ন বর্ণের মিশ্রণ দিয়ে তৈরি করা যায়। এই জাতীয় দুটি স্ট্রিংয়ের একটি অর্ডিনাল (বাইট বাই) তুলনা একটি পার্থক্য সনাক্ত করতে পারে, এটি অপ্রত্যাশিত বা অনাকাঙ্ক্ষিত হতে পারে।

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


সুতরাং, এই সব প্রশ্নের সাথে সম্পর্কিত মানে? পাঠ্য এলিমেন্টটি '𠈓'একক কোড পয়েন্ট ইউ + 20213 সিজেকে ইউনিফাইড আইডোগ্রাফগুলি এক্সটেনশান দ্বারা প্রতিনিধিত্ব করেছে খ । এর অর্থ এটি একটি একক হিসাবে এনকোড করা যাবে না charএবং দুটি চর ব্যবহার করে অবশ্যই সুরোগেট পেয়ার হিসাবে এনকোড করা উচিত। এই কারণেই string bআর এক charদীর্ঘ string a

আপনার যদি নির্ভরযোগ্যভাবে (সতর্কতা stringঅবলম্বন করতে হয় ) পাঠ্যের উপাদানগুলির সংখ্যা গণনা করতে হয় তবে আপনার System.Globalization.StringInfoক্লাসটি এই জাতীয়ভাবে ব্যবহার করা উচিত ।

using System.Globalization;

string a = "abc";
string b = "A𠈓C";

Console.WriteLine("Length a = {0}", new StringInfo(a).LengthInTextElements);
Console.WriteLine("Length b = {0}", new StringInfo(b).LengthInTextElements);

আউটপুট প্রদান,

"Length a = 3"
"Length b = 3"

প্রত্যাশিত.


বিচারকার্য স্থগিত রাখার আদেশ

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


আমি মনে করি আপনার উত্তর সম্ভবত বিভ্রান্তিকর। এই ক্ষেত্রে, only কেবলমাত্র একটি কোড কোড পয়েন্ট, তবে যেহেতু এর কোড পয়েন্ট 0xFFFF ছাড়িয়েছে, তাই এটি সার্ওগেট জোড় ব্যবহার করে 2 কোড ইউনিট হিসাবে প্রতিনিধিত্ব করতে হবে। গ্রাফেম কোড কোডের শীর্ষে নির্মিত অন্য একটি ধারণা, যেখানে কোরিয়ার হ্যাঙ্গুল বা অনেক ল্যাটিন-ভিত্তিক ভাষায় দেখা যায়, গ্রাফিয়ামটি একটি একক কোড পয়েন্ট বা একাধিক কোড পয়েন্ট দ্বারা প্রতিনিধিত্ব করতে পারে।
nhahtdh

@ নাহহধঃ, আমি একমত, আমার উত্তরটি ভুল ছিল। আমি এটি আবার লিখেছি এবং আশা করি এটি এখন আরও বৃহত্তর স্পষ্টতা তৈরি করে।
Jodrell
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.