我想从控制台(波斯语字符)中读取一些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);
我写了上面的代码只读一个波斯语字符。也没有工作。
答案 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.in
是InputStream
,即字节流,它从控制台1到1生成字节。
要阅读字符,您需要Reader
。 Reader
采用InputStream
和编码,并生成字符。
如果它没有帮助,请尝试其他控制台(例如Windows cmd
,但首先运行chcp 65001
)。