Tôi cần đọc đầu vào từ người dùng và tôi muốn hỗ trợ các chữ cái không phải la tinh, chẳng hạn như Å, Ä và Ö.Đọc từ bàn phím trong UTF-8
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out, "UTF-8"), true);
out.println(keyboard.readLine());
out.println("Read with charset: " + Charset.defaultCharset().name());
Khi tôi chạy mã này và nhập chữ cái Latinh hoạt động như mong đợi (tôi nhập nội dung nào đó, nhấn enter và in ra những gì tôi đã nhập). Nhưng nếu tôi cố gắng với å tôi có được điều này:
å
�
Read with charset: UTF-8
tôi phải nhấn Enter hai lần nếu văn bản kết thúc bằng một chữ cái không phải latin, và sau đó nó không hiển thị chúng ngay. Tôi đã thử điều này trong giao diện điều khiển của Netbeans, và trong dấu nhắc lệnh Windows và không cho kết quả mong đợi.
Tôi không thể tìm thấy giải pháp với UTF-8, nhưng thay vào đó là ISO-8859-1. Nó làm việc với giao diện điều khiển Netbeans của tôi (chắc chắn là UTF-8) và trong CMD khi lần đầu tiên chạy chcp 28591
, thay đổi phông chữ (nó là cần thiết trong trường hợp của tôi) và chạy chương trình của tôi.
http://stackoverflow.com/questions/4597749/read-write-txt-file-with-special-characters và http://stackoverflow.com/questions/9281629/read-special-characters-in-java -with-bufferedreader – crAlexander
Nó làm việc cho tôi. Bàn điều khiển của bạn phải được thiết lập để không hiển thị đúng UTF-8. – RealSkeptic
@RealSkeptic, tôi có thể in ra các ký tự không phải latin, không thành vấn đề (Sys.out.print ("å")). Điều này làm việc tốt trong cả hai giao diện điều khiển Netbeans và trong CMD. Nhưng khi tôi cố gắng đọc các ký tự, vấn đề xảy ra (cũng như phải nhấn enter hai lần khi một văn bản kết thúc bằng å ä hoặc ö). –