cmd命令行中执行Java文件中文字符乱码情况解决

如上所示的错误

由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式,也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class文件是UNICODE编码的,它暂放在内存中,紧接着,JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到的.class文件。对我们来说,我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件,它内部包含我们源程序中的中文字符串,只不过此时它己经由file.encoding格式转化为UNICODE格式了。当我们不加设置就编译时,相当于使用了参数:javac -encoding gbk XX.java,当然就会出现不兼容的情况。

解决:是编码问题

1、转换成UTF-8编码格式,但仍然有错

解决办法是:应该使用-encoding参数指明编码方式:javac -encoding UTF-8 XX.java


2、开始-->计算机-->鼠标反键(鼠标右键)-->属性-->高级系统设置-->环境变量-->系统变量

新建。然后输入:“JAVA_TOOL_OPTIONS”变量,值为“-Dfile.encoding=UTF-8”

然后确定、确定、在确定后。新开命令行窗口,再次输入javac命令。


3、若编写代码时使用的是notepad++,先将其编码格式换成ANSI,再写入汉字。此时运行javac -d . XX.java就正确了。

当在 Java 命令行环境中遇到中文乱码问题时,通常是由于控制台编码、程序内部字符集配置或文件本身的编码不匹配所引起的。以下是几种常见的解决方案以及如何排查这些问题的方法: ### 1. 设置 JVM 的文件编码 可以尝试通过命令行参数显式地告诉 Java 运行时环境 (JRE) 使用哪种字符编码。对于 Linux/MacOS 可以这样做: ```bash java -Dfile.encoding=UTF-8 YourClassName ``` 而在 Windows 下则需要确保系统环境变量 `JAVA_TOOL_OPTIONS` 或者直接在命令前添加 `-Dfile.encoding=UTF-8`: ```cmd java -Dfile.encoding=UTF-8 YourClassName ``` 这会迫使整个应用程序都使用 UTF-8 编码读取和处理字符串数据。 ### 2. 修改控制台编码设置 #### 对于 Windows 用户: Windows 控制台默认使用的可能是 GBK/GBK2312 编码而不是 Unicode 标准下的 UTF-8 。为了改变这一点,在启动应用之前先输入 chcp (更改活动代码页)指令来切换到 UTF-8 ,即: ```cmd chcp 65001 ``` 然后就可以正常运行 java 程序了。 请注意,并不是所有的旧版 Windows 应用都能很好地支持这种转换;因此如果你发现终端还是显示错乱的文字,则考虑升级到较新的 Windows 版本,或者改用其他更好的终端模拟器(比如 Git Bash 或 Cmder),它们对 UTF-8 支持得更好。 #### 对于 Unix/Linux/macOS 用户: 一般而言,默认情况下这些操作系统已经配置好了 UTF-8 作为标准输出编码。但如果不确定的话,也可以手动检查当前的 locale 设置并适当调整它: ```sh locale # 查看现有设定 export LC_ALL=en_US.UTF-8 # 更改成合适的本地化选项 # 或者永久修改 /etc/environment 文件中的相关值。 ``` ### 3. 源代码及资源文件的保存格式 确保所有源文件均按照统一的方式存储文本内容——推荐全部采用 UTF-8 编码无 BOM 格式的纯文本文件。编辑器中务必确认选择了正确的编码方案再进行编写工作,同时也要保证编译后的 .class 文件同样是以该种形式存在的。 此外,对于涉及外部加载的文本资源(例如属性文件 `.properties`),应尽量避免硬编码非 ASCII 字符串,而是利用国际化机制将其抽取出来放到单独的语言包里管理。 --- 以上就是关于解决 Java 命令行下出现中文乱码的一些建议,希望对你有所帮助!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值