java scanner.nextLine()读取中文后返回乱码
控制台调整过CHCP 65001 和936
chcp 65001显示?
936 显示@ 或者^ 等
重复显示同一符号
import java.util.Scanner;
public class scannernextLinetest{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in,"UTF-8");
System.out.println("请输入汉字:");
String chinese=scanner.nextLine();
System.out.println(chinese);
}
}
疑惑是:即使是乱码,也应该不同啊?
诉求是: 1. 希望能教一下 怎么把上图结果变成不一样的乱码
2. 怎样把乱码调成汉字
谢谢!
首先,在使用Scanner读取字符串的时候,如果想要读取中文,需要在Scanner的构造函数中指定编码格式。你可以使用下面的代码构造Scanner对象:
Scanner scanner = new Scanner(System.in, "UTF-8");
这样就可以保证Scanner在读取字符串时正确地使用UTF-8编码。
然后你可以使用nextLine()方法来读取用户输入的字符串。
如果你想要把乱码调成汉字,可以尝试使用不同的编码格式,例如GBK。这样你可以使用下面的代码构造Scanner对象:
Scanner scanner = new Scanner(System.in, "GBK");
如果这样做仍然不行,可能是因为系统控制台的编码格式与Scanner的编码格式不一致。你可以使用chcp命令来查看系统控制台的编码格式,并使用控制台的编码格式来构造Scanner对象。
例如,如果系统控制台的编码格式是GBK,你可以使用下面的代码构造Scanner
对象:
Scanner scanner = new Scanner(System.in, "GBK");
如果你仍然无法解决问题,可以尝试使用其他方法来读取中文字符串,例如使用BufferedReader+InputStreamReader的方式。
下面是一个例子:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
String chinese = reader.readLine();
这样就可以保证读取的字符串是正确的中文了。