Potrzebuję odczytać dane wejściowe od użytkownika i chcę mieć wsparcie dla liter niełacińskich, takich jak Å, Ę i Ö.Odczytywanie z klawiatury w 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());
Kiedy uruchomić ten kod, a wejście łacińskie się, że działa zgodnie z oczekiwaniami (I wprowadzić coś, naciśnij enter i wypisuje co wszedłem). Ale gdy próbuję z dostaję to:
å
�
Read with charset: UTF-8
muszę nacisnąć enter dwa razy, jeśli tekst kończy się niełacińskie literę, a następnie ich nie wyświetlać rację. Próbowałem tego w konsoli Netbeans i w wierszu polecenia systemu Windows, a żadne nie daje oczekiwanych rezultatów.
Nie mogłem znaleźć rozwiązania z UTF-8, ale zamiast niego skorzystałem z ISO-8859-1. To działało z moją konsolą Netbeans (która zdecydowanie powinna być UTF-8) oraz w CMD, kiedy po raz pierwszy uruchomiłem chcp 28591
, zmieniłem czcionkę (było to konieczne w moim przypadku) i uruchomiłem mój program.
http://stackoverflow.com/questions/4597749/read-write-txt-file- with-special-charples i http://stackoverflow.com/questions/9281629/read-special-characters-in-java -with-bufferedreader – crAlexander
To działa dla mnie. Twoja konsola musi być skonfigurowana tak, aby nie wyświetlać poprawnie UTF-8. – RealSkeptic
@RealSkeptic, mogę wydrukować znaki inne niż łacińskie, bez problemu (Sys.out.print ("å")). Działa to dobrze zarówno w konsoli Netbeans, jak iw CMD. Ale kiedy próbuję czytać znaki, pojawia się problem (jak również, że trzeba nacisnąć dwukrotnie klawisz enter, gdy tekst kończy się na å ä lub ö). –