配置jdk版本后,出现中文代码识别不出来,原因应该是编写的代码为UTF-8的形式,然后cmd下的Dos命令行是,活动代码页: 936。
出现下面这个错误的原因是因为jdk内部使用的是UTF-8,而windows中文操作系统默认使用的GBK字符编码。编码不一致时,java无法正常解析文本中的中文字符。
成功的方法:在系统变量里,创建环境变量:
变量名: JAVA_TOOL_OPTIONS, 变量值:-Dfile.encoding=UTF-8
这样在Dos命令行里就能识别并编译,不会出现中文乱码。
javac 文件名.java; java 类名;
下面的内容是我的解决问题的一些失败例子,大家解决完问题,没有兴趣的话就不用继续看了:
一开始我是jdk1.8改成21的版本,当时是用的UltraEidt记事本写了一段时间的Java基础代码,出现问题,最后改设置改编码都没有成功,然后换成了新安的Subline记事本正常运行;但是后面又改环境变量成了jdk17,出现同样的问题。
临时的编译方法:javac -encoding UTF-8 Hello.java (但是只在当前命令行里有效)
两个失败的方法,一个是改系统的时间和语言,语言区域,管理语言设置,更改系统区域设置,勾选Beta版选项,重启后一直出现错误弹窗。猜测是因为系统的用户名是中文导致的,被迫把勾选的改回来。大家没事别去尝试。
另一个是改注册表,新建了Autorun的值chcp 65001;发现没什么用又给删了。
然后在命令行里javac -encoding UTF-8 HelloWorld.java,只能临时解决,看了这个网页也看不懂:JVM(TM) 工具界面 1.2.1
最后加了新的系统变量:变量名: JAVA_TOOL_OPTIONS, 变量值:-Dfile.encoding=UTF-8
这才算是解决了这个小问题。