ฉันกำลังสร้างโปรแกรม wordcount อย่างง่ายใน Java ที่อ่านไฟล์ตามข้อความของไดเร็กทอรี
อย่างไรก็ตามฉันยังคงได้รับข้อผิดพลาด:
java.nio.charset.MalformedInputException: Input length = 1
จากบรรทัดของรหัสนี้:
BufferedReader reader = Files.newBufferedReader(file,Charset.forName("UTF-8"));
ฉันรู้ว่าฉันอาจได้รับสิ่งนี้เนื่องจากฉันใช้Charsetตัวอักษรที่ไม่มีอักขระบางตัวในไฟล์ข้อความซึ่งบางตัวมีอักขระของภาษาอื่นด้วย แต่ฉันต้องการรวมตัวละครเหล่านั้น
ฉันเรียนรู้ในภายหลังที่JavaDocsว่าCharsetเป็นทางเลือกและใช้เพื่อการอ่านไฟล์ที่มีประสิทธิภาพมากขึ้นเท่านั้นดังนั้นฉันจึงเปลี่ยนรหัสเป็น:
BufferedReader reader = Files.newBufferedReader(file);
แต่บางไฟล์ยังคงใช้ไฟล์MalformedInputException. ฉันไม่รู้ว่าทำไม
ฉันสงสัยว่ามีการรวมทุกอย่างCharsetที่จะช่วยให้ฉันอ่านไฟล์ข้อความที่มีอักขระประเภทต่างๆได้หรือไม่?
ขอบคุณ.
ISO-8859-1แล้วและได้ผลดี ฉันคิดว่ามันเป็นสำหรับตัวละครในยุโรปซึ่งก็ใช้ได้ ฉันยังไม่รู้ว่าทำไมถึงUTF-16ไม่ได้ผล