ResourceBundle#getBundle()
কভার অধীনে ব্যবহারসমূহ PropertyResourceBundle
একটি যখন .properties
ফাইল উল্লেখ করা হয়। পরিবর্তে এই Properties#load(InputStream)
বৈশিষ্ট্যগুলি ফাইল লোড করতে ডিফল্টরূপে এটি ব্যবহার করে । জাভাডোক হিসাবে , তারা ডিফল্টরূপে আইএসও -8859-1 হিসাবে পড়ে।
public void load(InputStream inStream) throws IOException
ইনপুট বাইট স্ট্রিম থেকে একটি সম্পত্তি তালিকা (কী এবং উপাদানগুলির জোড়া) পড়ে। ইনপুট স্ট্রিমটি লোড (রিডার) এ উল্লিখিত হিসাবে একটি সাধারণ লাইন-ভিত্তিক ফর্ম্যাটে রয়েছে এবং আইএসও 8859-1 অক্ষর এনকোডিং ব্যবহার করা হয় বলে ধরে নেওয়া হয় ; এটি প্রতিটি বাইট হ'ল একটি ল্যাটিন 1 অক্ষর। লাতিন 1-এ নয় এমন অক্ষর এবং কিছু বিশেষ অক্ষর, জাভা ™ ভাষা নির্দিষ্টকরণের ৩.৩ অনুচ্ছেদে বর্ণিত ইউনিকোড পলায়ন ব্যবহার করে কী এবং উপাদানগুলিতে উপস্থাপিত হয়।
সুতরাং, আপনার সেগুলি আইএসও -8859-1 হিসাবে সংরক্ষণ করতে হবে। আপনার যদি ISO-8859-1 সীমার বাইরে কোনও অক্ষর থাকে এবং আপনি \uXXXX
মাথার উপরের অংশটি ব্যবহার করতে না পারেন এবং আপনাকে এইভাবে UTF-8 হিসাবে ফাইলটি সংরক্ষণ করতে বাধ্য করা হয়, তবে আপনাকে রূপান্তর করতে নেটিসি 2 এসসিআই সরঞ্জামটি ব্যবহার করতে হবে ইউটিএফ -8 সংরক্ষিত বৈশিষ্ট্য ফাইলটি একটি আইএসও -8859-1 সংরক্ষিত বৈশিষ্ট্য ফাইলে ফেলা হয়েছে যাতে সমস্ত অনাবৃত অক্ষরগুলিকে \uXXXX
ফর্ম্যাটে রূপান্তরিত করা হয়। নীচের উদাহরণটি কোনও ইউটিএফ -8 এনকোডযুক্ত বৈশিষ্ট্য ফাইলকে text_utf8.properties
একটি বৈধ আইএসও -8859-1 এনকোড করা বৈশিষ্ট্য ফাইলে রূপান্তর করে text.properties
।
নেটিটিয়াএসসিআই-এনকোডিং ইউটিএফ -8 পাঠ্য_টফ 8. প্রপার্টি পাঠ্য
Eclipse এর মতো কোনও বুদ্ধিমান IDE ব্যবহার করার সময়, আপনি যখন .properties
জাভা ভিত্তিক প্রকল্পে একটি ফাইল তৈরি করেন এবং Eclipse এর নিজস্ব সম্পাদক ব্যবহার করেন তবে এটি ইতিমধ্যে স্বয়ংক্রিয়ভাবে সম্পন্ন হবে । গ্রহনটি স্বচ্ছভাবে ISO-8859-1 সীমার বাইরে অক্ষরগুলিকে \uXXXX
বিন্যাসে রূপান্তর করবে । স্ক্রিনশটগুলির নীচেও দেখুন (নীচে "বৈশিষ্ট্যগুলি" এবং "উত্স" ট্যাবগুলি নোট করুন, বৃহত্তর জন্য ক্লিক করুন):
বিকল্পভাবে, আপনি একটি কাস্টম ResourceBundle.Control
বাস্তবায়নও তৈরি করতে পারেন যেখানে আপনি স্পষ্টভাবে ইউটিএফ -8 হিসাবে বৈশিষ্ট্যগুলি ফাইলগুলি ব্যবহার করে স্পষ্টভাবে পড়তে InputStreamReader
পারেন, যাতে আপনি কোনও ঝামেলা ছাড়াই কেবল তাদের ইউটিএফ -8 হিসাবে সংরক্ষণ করতে পারেন native2ascii
। এখানে একটি কিক অফ উদাহরণ:
public class UTF8Control extends Control {
public ResourceBundle newBundle
(String baseName, Locale locale, String format, ClassLoader loader, boolean reload)
throws IllegalAccessException, InstantiationException, IOException
{
// The below is a copy of the default implementation.
String bundleName = toBundleName(baseName, locale);
String resourceName = toResourceName(bundleName, "properties");
ResourceBundle bundle = null;
InputStream stream = null;
if (reload) {
URL url = loader.getResource(resourceName);
if (url != null) {
URLConnection connection = url.openConnection();
if (connection != null) {
connection.setUseCaches(false);
stream = connection.getInputStream();
}
}
} else {
stream = loader.getResourceAsStream(resourceName);
}
if (stream != null) {
try {
// Only this line is changed to make it to read properties files as UTF-8.
bundle = new PropertyResourceBundle(new InputStreamReader(stream, "UTF-8"));
} finally {
stream.close();
}
}
return bundle;
}
}
এটি নিম্নলিখিত হিসাবে ব্যবহার করা যেতে পারে:
ResourceBundle bundle = ResourceBundle.getBundle("com.example.i18n.text", new UTF8Control());
আরো দেখুন: