ฉันพยายามใช้ java.io.FileReader เพื่ออ่านไฟล์ข้อความและแปลงเป็นสตริง แต่ฉันพบว่าผลลัพธ์นั้นเข้ารหัสผิดและไม่สามารถอ่านได้เลย
นี่คือสภาพแวดล้อมของฉัน:
Windows 2003, การเข้ารหัสระบบปฏิบัติการ: CP1252
Java 5.0
ไฟล์ของฉันเข้ารหัส UTF-8 หรือเข้ารหัส CP1252 และบางไฟล์ (ไฟล์ที่เข้ารหัส UTF-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();
}
โค้ดด้านบนใช้ไม่ได้ ฉันพบว่าการเข้ารหัสของ FileReader คือ CP1252 แม้ว่าข้อความจะเข้ารหัส UTF-8 แต่ JavaDoc ของ java.io.FileReader บอกว่า:
ตัวสร้างของคลาสนี้ถือว่าการเข้ารหัสอักขระดีฟอลต์และขนาดไบต์บัฟเฟอร์เริ่มต้นนั้นเหมาะสม
หมายความว่าฉันไม่จำเป็นต้องตั้งค่าการเข้ารหัสอักขระด้วยตัวเองหากฉันใช้ FileReader แต่ฉันได้รับข้อมูลที่เข้ารหัสผิดวิธีในการจัดการกับสถานการณ์ของฉันที่ถูกต้องคืออะไร? ขอบคุณ