Tôi đang tạo một chương trình wordcount đơn giản trong Java để đọc qua các tệp dựa trên văn bản của thư mục.
Tuy nhiên, tôi tiếp tục nhận được lỗi:
java.nio.charset.MalformedInputException: Input length = 1
từ dòng mã này:
BufferedReader reader = Files.newBufferedReader(file,Charset.forName("UTF-8"));
Tôi biết tôi có thể nhận được điều này vì tôi đã sử dụng một Charset
không bao gồm một số ký tự trong tệp văn bản, một số trong đó bao gồm các ký tự của các ngôn ngữ khác. Nhưng tôi muốn đưa những nhân vật đó vào.
Sau đó, tôi đã học được tại JavaDocs rằng mã Charset
này là tùy chọn và chỉ được sử dụng để đọc tệp hiệu quả hơn, vì vậy tôi đã thay đổi mã thành:
BufferedReader reader = Files.newBufferedReader(file);
Nhưng một số tệp vẫn ném MalformedInputException
. Tôi không biết tại sao.
Tôi đã tự hỏi liệu có tính năng bao gồm tất cả Charset
sẽ cho phép tôi đọc các tệp văn bản với nhiều loại ký tự khác nhau không?
Cảm ơn.
ISO-8859-1
và nó hoạt động tốt. Tôi nghĩ nó dành cho các nhân vật châu Âu, điều đó ổn. Tôi vẫn không biết tại saoUTF-16
nó không hoạt động.