System.in is an InputStream, not a reader, so it returns bytes not characters. Whatever character encoding it uses depends on the console. It would be hard to determine for sure whether the input is from a single byte or double byte or generally multibyte character set, just from examining System.in's input, because for all you know the input doesn't even represent ...