বিভিন্ন Character Encoding সমর্থন (UTF-8, ISO-8859-1, ইত্যাদি)

Character Sets এবং Encoding/Decoding - জাভা নিও (Java Nio) - Java Technologies

312

Java NIO (New I/O) প্যাকেজটি ফাইল এবং স্ট্রিমে ডেটা পরিচালনা করার সময় বিভিন্ন Character Encoding সমর্থন করে। Character Encoding হল একটি সিস্টেম যা এক্সটেনসিভ ক্যারেক্টার সেটকে বাইনারি ডেটাতে রূপান্তর করে, যাতে সিস্টেমগুলোতে টেক্সট ডেটা ঠিকভাবে সংরক্ষিত এবং প্রক্রিয়াকৃত হতে পারে। Java NIO তে Charset এবং CharsetEncoder/CharsetDecoder ক্লাসের মাধ্যমে বিভিন্ন ধরনের character encoding যেমন UTF-8, ISO-8859-1, UTF-16 ইত্যাদি ব্যবহার করা হয়।

Java তে Character Encoding এর মধ্যে UTF-8 এবং ISO-8859-1 সবচেয়ে বেশি ব্যবহৃত এবং সমর্থিত। এগুলোর মধ্যে পার্থক্য এবং ব্যবহার সম্পর্কিত বিশদ আলোচনা করা হবে নিচে।


Character Encoding এবং Java NIO

Java NIO তে Charset ক্লাসের মাধ্যমে আপনি বিভিন্ন ধরনের Character Encoding সমর্থন করতে পারেন, এবং এটিকে CharsetDecoder এবং CharsetEncoder এর মাধ্যমে encode এবং decode করা যেতে পারে।

১. Charset ক্লাস

Java NIO এর Charset ক্লাস বিভিন্ন ধরনের character encoding এবং decoding করার জন্য ব্যবহৃত হয়। এটি UTF-8, ISO-8859-1, UTF-16 সহ বিভিন্ন character set সমর্থন করে।

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

Charset utf8Charset = StandardCharsets.UTF_8;
Charset isoCharset = StandardCharsets.ISO_8859_1;

এখানে, StandardCharsets ক্লাসটি কিছু সাধারণ Charset (যেমন UTF-8, ISO-8859-1, UTF-16) সরবরাহ করে।


Java NIO তে বিভিন্ন Character Encoding এর ব্যবহার

২. UTF-8 Encoding

UTF-8 হল একটি অত্যন্ত জনপ্রিয় character encoding যা সব ধরনের ভাষার ক্যারেক্টার সমর্থন করে এবং এটি ভেরিয়েবল লেন্থে (1-4 বাইট) character encode করে। এটি ASCII এর সুপারসেট, তাই ASCII ক্যারেক্টারগুলি 1 বাইটে এবং অন্যান্য Unicode ক্যারেক্টারগুলি 2 থেকে 4 বাইটে এনকোড করা হয়।

উদাহরণ: UTF-8 Encoding এবং Decoding

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.ByteBuffer;

public class UTF8Example {
    public static void main(String[] args) {
        String text = "Hello, Java NIO!";
        
        // UTF-8 Encoding
        ByteBuffer buffer = StandardCharsets.UTF_8.encode(text);
        System.out.println("Encoded text in UTF-8: " + buffer.toString());

        // UTF-8 Decoding
        String decodedText = StandardCharsets.UTF_8.decode(buffer).toString();
        System.out.println("Decoded text: " + decodedText);
    }
}

এখানে, প্রথমে UTF-8 এনকোডিংয়ের মাধ্যমে String কে ByteBuffer তে রূপান্তরিত করা হচ্ছে এবং পরে সেটি ডিকোড করা হচ্ছে।

৩. ISO-8859-1 Encoding

ISO-8859-1 বা Latin-1 একটি 1 বাইট encoding যা পশ্চিম ইউরোপীয় ভাষাগুলির জন্য উপযুক্ত। এটি মূলত ASCII এর একটি সাবসেট যেখানে অতিরিক্ত কিছু অক্ষর যেমন €, ñ, é ইত্যাদি অন্তর্ভুক্ত রয়েছে।

উদাহরণ: ISO-8859-1 Encoding এবং Decoding

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.ByteBuffer;

public class ISO88591Example {
    public static void main(String[] args) {
        String text = "Olá, Mundo!";

        // ISO-8859-1 Encoding
        ByteBuffer buffer = StandardCharsets.ISO_8859_1.encode(text);
        System.out.println("Encoded text in ISO-8859-1: " + buffer.toString());

        // ISO-8859-1 Decoding
        String decodedText = StandardCharsets.ISO_8859_1.decode(buffer).toString();
        System.out.println("Decoded text: " + decodedText);
    }
}

এখানে, Olá, Mundo! টেক্সটটি ISO-8859-1 এনকোডিংয়ের মাধ্যমে ByteBuffer তে রূপান্তরিত করা হচ্ছে এবং পরে সেটি ডিকোড করা হচ্ছে।

৪. UTF-16 Encoding

UTF-16 হল Unicode এনকোডিং যা দুই বাইট বা চার বাইটে চরিত্র এনকোড করে। এটি Unicode চরিত্র সেটের জন্য একটি সাধারণ এবং ব্যাপকভাবে ব্যবহৃত এনকোডিং পদ্ধতি। UTF-16 ব্যবহার করা হয় অনেক আধুনিক অ্যাপ্লিকেশন যেমন Windows API, Java, এবং JavaScript এর মধ্যে।

উদাহরণ: UTF-16 Encoding এবং Decoding

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.ByteBuffer;

public class UTF16Example {
    public static void main(String[] args) {
        String text = "こんにちは, Java NIO!";
        
        // UTF-16 Encoding
        ByteBuffer buffer = StandardCharsets.UTF_16.encode(text);
        System.out.println("Encoded text in UTF-16: " + buffer.toString());

        // UTF-16 Decoding
        String decodedText = StandardCharsets.UTF_16.decode(buffer).toString();
        System.out.println("Decoded text: " + decodedText);
    }
}

এখানে, こんにちは, Java NIO! টেক্সটটি UTF-16 এনকোডিংয়ের মাধ্যমে ByteBuffer তে রূপান্তরিত করা হচ্ছে এবং পরে সেটি ডিকোড করা হচ্ছে।

৫. CharsetDecoder এবং CharsetEncoder

CharsetDecoder এবং CharsetEncoder ক্লাসগুলো এনকোডিং এবং ডিকোডিংয়ের কাজ সহজতর করে। CharsetDecoder একটি byte array কে character sequence (String) এ রূপান্তর করে এবং CharsetEncoder character sequence কে byte array তে রূপান্তর করে।

উদাহরণ: CharsetDecoder এবং CharsetEncoder

import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.io.UnsupportedEncodingException;

public class CharsetEncoderDecoderExample {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String text = "Java NIO Encoding Example";
        
        // CharsetEncoder
        Charset charset = Charset.forName("UTF-8");
        CharsetEncoder encoder = charset.newEncoder();
        ByteBuffer byteBuffer = encoder.encode(CharBuffer.wrap(text));
        System.out.println("Encoded ByteBuffer: " + byteBuffer.toString());

        // CharsetDecoder
        CharsetDecoder decoder = charset.newDecoder();
        CharBuffer charBuffer = decoder.decode(byteBuffer);
        System.out.println("Decoded text: " + charBuffer.toString());
    }
}

এখানে, CharsetEncoder এবং CharsetDecoder ব্যবহার করে UTF-8 এনকোডিং এবং ডিকোডিংয়ের মাধ্যমে টেক্সট প্রক্রিয়া করা হচ্ছে।


Java NIO তে Character Encoding সমর্থন করা হয় Charset, CharsetEncoder, এবং CharsetDecoder ক্লাসের মাধ্যমে। এতে আপনি বিভিন্ন জনপ্রিয় এনকোডিং পদ্ধতি যেমন UTF-8, ISO-8859-1, এবং UTF-16 ব্যবহার করতে পারেন। প্রতিটি এনকোডিংয়ের জন্য নির্দিষ্ট সুবিধা রয়েছে, যেমন UTF-8 ইউনিকোড চরিত্র সমর্থন করে এবং বিভিন্ন ভাষার জন্য আদর্শ, ISO-8859-1 প্রধানত পশ্চিম ইউরোপীয় ভাষাগুলির জন্য ব্যবহৃত হয়, এবং UTF-16 বড় আকারের Unicode সিস্টেমের জন্য আদর্শ। Java NIO আপনাকে এই সমস্ত এনকোডিং সহজে এবং কার্যকরীভাবে পরিচালনা করার সুযোগ দেয়।


Content added By
Promotion

Are you sure to start over?

Loading...