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 Charsetkhô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ã Charsetnà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ả Charsetsẽ 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-1và 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-16nó không hoạt động.