我想从控制台读取一些 Unicode 字符(波斯语字符)。 我已经使用了 System.in 但它不起作用。看起来标准输入不理解我在输入中写入的字符,因此它只是向我的字符串变量返回一些胡言乱语。我绝对确定字符串变量的标准设置为“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);
我编写上述代码是为了仅读取一个波斯语字符。也没有用。
最佳答案
首先,控制台必须处于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
,即字节流,它从控制台一对一地生成字节。
要读取字符,您需要 Reader
。一个Reader
需要 InputStream
和编码,并生成字符。
如果没有帮助,请尝试另一个控制台(例如 Windows cmd
,但首先运行 chcp 65001
)。
关于java - 从java中的控制台读取UTF-8标准的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50854762/