从java中的控制台读取UTF-8标准的字符

时间:2018-06-14 10:00:40

标签: java input unicode

我想从控制台(波斯语字符)中读取一些Unicode字符。 我使用过System.in,但它没有用。看起来标准输入不理解我在输入中写的字符,所以它只是将一些mumbo jumbo返回到我的String变量。我绝对相信String变量的标准设置为" UTF-8"。相信我,我加倍检查。

我尝试过的一些代码。

String t = new String (new Scanner(System.in).nextLine().getBytes() , "UTF-8");

没有工作。

byte b[] = new byte[4];
System.in.read(b);
String st = new String (b , "UTF-16");
System.out.println(st);

我写了上面的代码只读一个波斯语字符。也没有工作。

1 个答案:

答案 0 :(得分:0)

首先,控制台必须处于UTF-8模式。

如果使用NetBeans,请编辑文件<NetBeansRoot>/etc/netbeans.conf。 在netbeans_default_options下,添加-J-Dfile.encoding=UTF-8

一旦您确定控制台和项目编码设置为UTF-8,请尝试以下操作:

Scanner console = new Scanner(new InputStreamReader(System.in, "UTF-8"));
while (console.hasNextLine())
    System.out.println(console.nextLine());

注意:System.inInputStream,即字节流,它从控制台1到1生成字节。
要阅读字符,您需要ReaderReader采用InputStream和编码,并生成字符。

如果它没有帮助,请尝试其他控制台(例如Windows cmd,但首先运行chcp 65001)。