.NET-এ প্রতিটি স্ট্রিংর একটি ক্যারেক্টার সেট এবং এনকোডিং থাকে। একটি ক্যারেক্টার এনকোডিং কম্পিউটারকে বলে কীভাবে র ZerOs এবং Ones-কে রিয়েল ক্যারেক্টারে ইন্টারপ্রেট করতে হবে। এটি সাধারণত নাম্বারদের ক্যারেক্টারসহ পেয়ার আপ করে। আসলে, এটি ইউনিকোড ক্যারেক্টারসের একটি সেটকে বাইটসের একটি সিকোয়েন্সে ট্রান্সফর্ম করার প্রক্রিয়া।
আমরা `Encoding.GetString` মেথড (Byte[]) ব্যবহার করে নির্দিষ্ট বাইট অ্যারেতে থাকা সকল বাইটকে ডিকোড করে একটি স্ট্রিং পেতে পারি। `Encoding` ক্লাসে অন্যান্য ডিকোডিং স্কিমও উপলব্ধ যেমন UTF8, Unicode, UTF32, ASCII ইত্যাদি। `Encoding` ক্লাস `System.Text` নেমস্পেসের অংশ।
string result = Encoding.Default.GetString(byteArray);
উদাহরণ
using System;
using System.Text;
namespace DemoApplication
{
public class Program
{
static void Main(string[] args)
{
byte[] byteArray = Encoding.Default.GetBytes("Hello World");
Console.WriteLine($"Byte Array is: {string.Join(" ", byteArray)}");
string str = Encoding.Default.GetString(byteArray);
Console.WriteLine($"String is: {str}");
Console.ReadLine();
}
}
}
আউটপুট
Byte Array is: 72 101 108 108 111 32 87 111 114 108 100
String is: Hello World
এটি মনে রাখা গুরুত্বপূর্ণ যে আমাদের উভয় দিকেই একই এনকোডিং ব্যবহার করতে হবে। উদাহরণস্বরূপ, যদি বাইট অ্যারে ASCII-তে এনকোড করা থাকে এবং আমরা UTF32 ব্যবহার করে স্ট্রিং পাওয়ার চেষ্টা করি, তবে আমরা ডিজায়ারড স্ট্রিং পাবো না।
উদাহরণ: ভুল এনকোডিং ব্যবহার
using System;
using System.Text;
namespace DemoApplication
{
public class Program
{
static void Main(string[] args)
{
byte[] byteArray = Encoding.ASCII.GetBytes("Hello World");
Console.WriteLine($"Byte Array is: {string.Join(" ", byteArray)}");
string str = Encoding.UTF32.GetString(byteArray);
Console.WriteLine($"String is: {str}");
Console.ReadLine();
}
}
}
আউটপুট
Byte Array is: 72 101 108 108 111 32 87 111 114 108 100
String is: ???