আমি কিছু পাঠ্য ফাইল পড়তে এবং সেগুলিকে একটি স্ট্রিংয়ে রূপান্তর করতে java.io.FileReader ব্যবহার করার চেষ্টা করেছি, তবে আমি দেখতে পেয়েছি ফলাফলটি ভুলভাবে এনকোড হয়েছে এবং মোটেও পঠনযোগ্য নয়।
আমার পরিবেশটি এখানে:
উইন্ডোজ 2003, ওএস এনকোডিং: সিপি 1252
জাভা 5.0
আমার ফাইলগুলি ইউটিএফ -8 এনকোডযুক্ত বা সিপি 1252 এনকোডযুক্ত রয়েছে এবং তাদের মধ্যে কিছুতে (ইউটিএফ -8 এনকোডযুক্ত ফাইলগুলি) চাইনিজ (ল্যাটিনবিহীন) অক্ষর থাকতে পারে।
আমি আমার কাজটি করতে নিম্নলিখিত কোডগুলি ব্যবহার করি:
private static String readFileAsString(String filePath)
throws java.io.IOException{
StringBuffer fileData = new StringBuffer(1000);
FileReader reader = new FileReader(filePath);
//System.out.println(reader.getEncoding());
BufferedReader reader = new BufferedReader(reader);
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
}
reader.close();
return fileData.toString();
}
উপরের কোডটি কাজ করে না। আমি খুঁজে পেয়েছি যে ফাইলআরডারটির এনকোডিংটি CP1252, এমনকি যদি পাঠ্যটি ইউটিএফ -8 এনকোডড থাকে। তবে java.io.FileReader এর জাভাডোক বলেছেন যে:
এই শ্রেণীর নির্মাতারা ধরে নেন যে ডিফল্ট অক্ষর এনকোডিং এবং ডিফল্ট বাইট-বাফার আকার উপযুক্ত।
এর অর্থ কি এই যে আমি যদি ফাইলরেডার ব্যবহার করছি তবে নিজের দ্বারা অক্ষর এনকোডিং সেট করার দরকার নেই? তবে আমি বর্তমানে ভুলভাবে এনকোড করা ডেটা পেয়েছি, আমার সিটটিওনটি মোকাবেলার সঠিক উপায় কী? ধন্যবাদ।