Java তে UTF-8 এবং UTF-16 এর সমর্থন

Character Encoding এবং Unicode Support - জাভা ইন্টারন্যাশনালাইজেশন (Java Internalization) - Java Technologies

365

UTF-8 এবং UTF-16 হল দুটি জনপ্রিয় Unicode encoding schemes যা Java তে আন্তর্জাতিককরণ (i18n) এর জন্য ব্যবহৃত হয়। UTF (Unicode Transformation Format) একটি ইউনিকোড এনকোডিং স্কিম যা সমস্ত বিশ্বের ভাষার চরিত্র প্রতিনিধিত্ব করতে সক্ষম। এই দুটি এনকোডিং স্কিম Java তে বহুভাষী অ্যাপ্লিকেশন তৈরি করতে সহায়ক, যাতে বিশ্বের বিভিন্ন ভাষার এবং চরিত্র সেটের ডেটা সঠিকভাবে সংরক্ষণ, প্রক্রিয়া এবং প্রদর্শন করা যায়।


UTF-8 এবং UTF-16 এর মধ্যে পার্থক্য:

  1. UTF-8:
    • Variable-length encoding: UTF-8 হল একটি variable-length encoding scheme, যার মধ্যে প্রতিটি ইউনিকোড চরিত্র ১ থেকে ৪ বাইটে এনকোড করা হতে পারে।
    • Backward Compatibility: UTF-8 ASCII এর সাথে পুরোপুরি সামঞ্জস্যপূর্ণ (backward compatible) এবং কমপ্যাক্ট। ASCII চরিত্রগুলি ১ বাইটে এনকোড করা হয়, তবে অন্যান্য ইউনিকোড চরিত্রগুলির জন্য ২, ৩ বা ৪ বাইট প্রয়োজন।
    • File Size: UTF-8 সাধারণত ছোট ফাইল আকারে সংরক্ষিত হয়, কারণ এটি ASCII ডেটা কম বাইটে এনকোড করে।
  2. UTF-16:
    • Fixed-length encoding: UTF-16 হল একটি fixed-length encoding scheme, যেখানে প্রতিটি ইউনিকোড চরিত্র ২ বা ৪ বাইটে এনকোড করা হয়।
    • Multi-byte characters: কিছু চরিত্রের জন্য এটি ৪ বাইটের প্রয়োজন হতে পারে, তবে প্রায়শই ২ বাইটে কাজ করে।
    • File Size: UTF-16 ফাইল সাইজ বড় হতে পারে, কারণ এটি সর্বদা ২ বা ৪ বাইট ব্যবহার করে।

Java তে UTF-8 এবং UTF-16 এর সমর্থন:

Java-তে, UTF-8 এবং UTF-16 দুটি এনকোডিং স্কিমের সমর্থন রয়েছে, যা মূলত String ক্লাসের মধ্যে অন্তর্ভুক্ত থাকে। Java এর char ডেটা টাইপ UTF-16 এনকোডিং ব্যবহার করে, এবং byte আকারে স্টোর করার জন্য UTF-8 বা UTF-16 নির্দিষ্ট করা যায়।

UTF-8 সমর্থন:

Java তে UTF-8 সমর্থনের জন্য InputStreamReader, OutputStreamWriter, এবং Files API ব্যবহার করা যায়।

UTF-8 এর সাথে ডেটা পড়া এবং লেখা উদাহরণ:

import java.io.*;

public class UTF8Example {
    public static void main(String[] args) {
        String text = "Hello, World! こんにちは 世界";

        try (OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("utf8file.txt"), "UTF-8")) {
            writer.write(text);
        } catch (IOException e) {
            e.printStackTrace();
        }

        try (InputStreamReader reader = new InputStreamReader(new FileInputStream("utf8file.txt"), "UTF-8")) {
            int character;
            while ((character = reader.read()) != -1) {
                System.out.print((char) character);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • OutputStreamWriter এবং InputStreamReader ব্যবহার করে UTF-8 এনকোডিংয়ে ডেটা লেখা এবং পড়া হচ্ছে।
  • এখানে একটি স্ট্রিং যা বিভিন্ন ভাষার (English, Japanese) চরিত্র ধারণ করে, সেটি UTF-8 ফাইলে লেখা হয়েছে এবং পরে ফাইল থেকে UTF-8 এনকোডিং ব্যবহার করে পড়া হয়েছে।

UTF-16 সমর্থন:

Java এর char ডেটা টাইপ ২ বাইটের ইউনিকোড এনকোডিং ব্যবহার করে (UTF-16)। আপনি Charset ক্লাসের মাধ্যমে UTF-16 এনকোডিং সাপোর্ট করতে পারেন, যা আপনাকে UTF-16 ফাইল লেখার এবং পড়ার সুযোগ দেয়।

UTF-16 এর সাথে ডেটা পড়া এবং লেখা উদাহরণ:

import java.io.*;
import java.nio.charset.Charset;

public class UTF16Example {
    public static void main(String[] args) {
        String text = "Hello, World! こんにちは 世界";

        try (OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("utf16file.txt"), Charset.forName("UTF-16"))) {
            writer.write(text);
        } catch (IOException e) {
            e.printStackTrace();
        }

        try (InputStreamReader reader = new InputStreamReader(new FileInputStream("utf16file.txt"), Charset.forName("UTF-16"))) {
            int character;
            while ((character = reader.read()) != -1) {
                System.out.print((char) character);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • Charset.forName("UTF-16") ব্যবহার করে UTF-16 এনকোডিং সাপোর্ট করা হচ্ছে।
  • OutputStreamWriter এবং InputStreamReader ব্যবহার করে UTF-16 এনকোডিংয়ে ডেটা লেখার এবং পড়ার কাজ করা হচ্ছে।

Java তে UTF-8 এবং UTF-16 এর সমর্থনের সুবিধা:

  1. Multilingual Support:
    • UTF-8 এবং UTF-16 Unicode ভিত্তিক এনকোডিং স্কিম, যা পৃথিবীর সমস্ত ভাষা, অক্ষর, এবং প্রতীক সঠিকভাবে প্রদর্শন ও সংরক্ষণ করতে সক্ষম।
  2. Compatibility:
    • UTF-8 সিস্টেমের সাথে সম্পূর্ণ সামঞ্জস্যপূর্ণ এবং এটি সর্বাধিক ব্যবহৃত এনকোডিং স্কিম, বিশেষ করে ইন্টারনেট এবং ওয়েব অ্যাপ্লিকেশনগুলিতে।
    • UTF-16 Java এর অভ্যন্তরীণ চরিত্র সেট এবং অধিকাংশ Java API UTF-16 তে কাজ করে।
  3. File Encoding Flexibility:
    • Java তে OutputStreamWriter এবং InputStreamReader ব্যবহার করে আপনি সহজেই UTF-8 এবং UTF-16 এনকোডিং ব্যবহার করে ফাইল থেকে ডেটা পড়তে এবং লিখতে পারেন।
  4. Memory Efficiency:
    • UTF-8 মেমরি দিক থেকে অধিক কার্যকরী কারণ এটি ASCII চরিত্রগুলিকে ১ বাইটে সংরক্ষণ করে এবং অন্যান্য ইউনিকোড চরিত্রগুলি ২, ৩ বা ৪ বাইটে এনকোড করে।
    • UTF-16 প্রতিটি চরিত্রের জন্য ২ বা ৪ বাইট ব্যবহার করে, তবে এটি অনেক ভাষার জন্য দ্রুত কার্যকরী হতে পারে যেখানে অধিকাংশ অক্ষর ২ বাইটে বসে।

  • UTF-8 এবং UTF-16 হল Unicode encoding schemes যা Java তে আন্তর্জাতিককরণ (i18n) সমর্থনের জন্য ব্যবহৃত হয়।
  • UTF-8 অধিকতর memory efficient এবং ASCII-compatible, যা কমপ্যাক্ট ফাইল আকারে ডেটা সংরক্ষণ করতে সহায়ক।
  • UTF-16 Java-র অভ্যন্তরীণ এনকোডিং এবং অধিকাংশ Java API-র জন্য উপযুক্ত, বিশেষত বৃহৎ পরিসরের ডেটা এবং বিভিন্ন ভাষার জন্য।

Java তে UTF-8 এবং UTF-16 এনকোডিং সিস্টেমের সমর্থন আন্তর্জাতিককরণ এবং বিভিন্ন ভাষার ডেটা পরিচালনা সহজ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...