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

标签 java input unicode

我想从控制台读取一些 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.inInputStream ,即字节流,它从控制台一对一地生成字节。
要读取字符,您需要 Reader 。一个Reader需要 InputStream和编码,并生成字符。

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

关于java - 从java中的控制台读取UTF-8标准的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50854762/

相关文章:

python - Python 中向后兼容的输入调用

php - MySQL Unicode Sinhala 数据到 DOMPDF

java - Semaphore 的大小可以与Threads 的执行顺序相关吗?

java - Jersey/JAX-RS 客户端抛出 400 错误请求

java - 递归Json节点更新

java - libGDX - 如何将表格填充到单元格大小?

c++ - Windows BlockInput 函数不工作

c - 关于C中的文件输入和输出

c++ - 尝试在代码块 13.12 中复制 strlwr 时出现奇怪的 ASCII 响应(中文)

c++ - 在编译时为 C++ 字符串文字选择默认类型和编码