ইন্টারন্যাশনালাইজেশন এনহ্যান্সমেন্ট জাভা ৯-এ شامل Unicode 8.0, UTF-8 প্রপার্টি ফাইল এবং CLDR লোকেল ডেটা ডিফল্টলি ইন্যাবল করা। জাভা ৯ Unicode 8.0 স্ট্যান্ডার্ড-এ ১০,৫৫৫ ক্যারেক্টার, ২৯ স্ক্রিপ্ট, এবং ৪২ ব্লক পর্যন্ত সাপোর্ট করে।
জাভা ৯-এ, প্রপার্টি ফাইলগুলো UTF-8 এনকোডিং-এ লোড হয়। ডিফল্টলি, ইনপুট স্ট্রিম পড়তে MalformedInputException বা UnmappableCharacterException থ্রো করে। এই কেসে, PropertyResourceBundle ইনস্ট্যান্স এক্সেপশন-এর আগের স্টেটে রিসেট হয়, ইনপুট স্ট্রিমকে ISO-8859-1-এ রি-রিড করে, এবং পড়তে থাকে।
যদি PropertyResourceBundle.encoding সেট করা থাকে ISO-8859-1 বা UTF-8-এ, তবে PropertyResourceBundle ইনস্ট্যান্স ইনপুট স্ট্রিমকে সেটি এনকোডিং-এ পড়ে, এবং ইনভ্যালিড সিকোয়েন্স এনকাউন্টার করলে এক্সেপশন থ্রো করে। সিস্টেম প্রপার্টি PropertyResourceBundle ক্লাস ইনিশিয়ালাইজ হয়ার সময় পড়া ও ইভ্যালুয়েট হয়, তাই প্রপার্টি পরিবর্তন বা রিমুভ করলে কোনো ইফেক্ট নেই।
যদি ISO-8859-1 স্পেসিফাই করা থাকে:
- ISO-8859-1 এনকোডিং-এ রিপ্রেজেন্ট করা নাও যাওয়া ক্যারেক্টারগুলো ইউনিকোড এস্কেপস দিয়ে রিপ্রেজেন্ট করতে হয়।
- অন্য এনকোডিং ভ্যালু এই সিস্টেম প্রপার্টি ইগনোর করে।
যদি সমস্যা হয়, নিচের অপশনগুলো বিবেচনা করুন:
- প্রপার্টি ফাইল-কে UTF-8 এনকোডিং-এ কনভার্ট করুন।
- রানটাইম সিস্টেম প্রপার্টি স্পেসিফাই করুন।
java.util.PropertyResourceBundle.encoding=ISO-8859-1