java此代码正确地输出代码中的汉字,而将从扫描仪捕获的汉字作为垃圾输出
我正试图从扫描仪上捕捉汉字
我在cmd跑步。在Windows10上执行
我已经运行了CHCP 65001
这是代码
import java.util.Scanner;
public class JavaScannerCN
{
public static void main (String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.print("中文 user name: ");
String username = scanner.next();
scanner.close();
System.out.println(String.format("Hello, %s", username));
System.out.println((int)'中');
System.out.println((int)username.charAt(0));
}
}
由于@ParkerHalo提醒,接收到的字符似乎已损坏,因为输出已损坏
Hello, ��
20013
96
此代码正确输出代码中的汉字,而将从扫描仪捕获的汉字作为垃圾输出
如何解决这个问题
# 1 楼答案
有几件事可能会导致这个问题。其中一个在windows环境中设置了字符集。我建议您使用一种诊断工具,它可以帮助您诊断您的问题,进而引导您找到合适的解决方案。有一个开源java库MgntUtils,它有一个实用程序,可以将字符串转换为unicode序列,反之亦然:
此代码的输出为:
该库可以在Maven Central或Github找到,它作为maven工件提供,并带有源代码和JavaDoc。下面是类StringUnicodeEncoderDecoder的JavaDoc
我建议您将从扫描仪接收到的输入字符串转换为Unicode序列,这将帮助您了解您是否收到了已损坏的信息,或者您的问题是显示问题