【Java】CMD编译Java源码遇到\ufeff问题的解决方法

记事本支持保存的四种编码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

UTF-8文件的CMD编译

我们把一个记事本写的、UTF-8编码的.java文件放在cmd下使用javac命令编译:
在这里插入图片描述

确实乱码,因为人家支持的默认CHCP是936:
在这里插入图片描述

这是简体中文,Unicode(UTF-8)是650001。

CHCP国家(地区)或语言
437美国
708阿拉伯文(ASMO 708)
720阿拉伯文(DOS)
850多语言(拉丁文 I)
852中欧(DOS) - 斯拉夫语(拉丁文 II)
855西里尔文(俄语)
857土耳其语
860葡萄牙语
861冰岛语
862希伯来文(DOS)
863加拿大 - 法语
865日耳曼语
866俄语 - 西里尔文(DOS)
869现代希腊语
874泰文(Windows)
932日文(Shift-JIS)
936中国 - 简体中文(GB2312)
949韩文
950繁体中文(Big5)
1200Unicode
1201Unicode (Big-Endian)
1250中欧(Windows)
1251西里尔文(Windows)
1252西欧(Windows)
1253希腊文(Windows)
1254土耳其文(Windows)
1255希伯来文(Windows)
1256阿拉伯文(Windows)
1257波罗的海文(Windows)
1258越南文(Windows)
20866西里尔文(KOI8-R)
21866西里尔文(KOI8-U)
28592中欧(ISO)
28593拉丁文 3 (ISO)
28594波罗的海文(ISO)
28595西里尔文(ISO)
28596阿拉伯文(ISO)
28597希腊文(ISO)
28598希伯来文(ISO-Visual)
38598希伯来文(ISO-Logical)
50000用户定义的
50001自动选择
50220日文(JIS)
50221日文(JIS-允许一个字节的片假名)
50222日文(JIS-允许一个字节的片假名 - SO/SI)
50225韩文(ISO)
50932日文(自动选择)
50949韩文(自动选择)
51932日文(EUC)
51949韩文(EUC)
52936简体中文(HZ)
65001Unicode (UTF-8)

使用-encoding utf8编译

竟不能成功?
在这里插入图片描述

在网上搜了搜\ufeff,意思差不多,都是说到了utf-8与utf-8-sig编码的问题。感兴趣的可以阅读下面的文章,作者在PyCharm使用中遇到了这样的问题,看他是怎么处理的:推荐阅读

但这并不能解决我们的问题。
我在网上搜了cmd、\ufeff、utf-8-sig相关,没有相关的解决方案。

我就试了试把-encoding utf8改成-encoding utf8sig,并不行,似乎cmd并不支持这种编码。

解决办法

如果不幸碰到了,那就换成ANSI或者Unicode吧,我都试过,绝对OK……

或者就用IDE吧……

未解之谜

CMD到底能不能支持utf-8-sig编码呢?能不能处理\ufeff呢?
网上没搜到,如果读者有知道的还请不吝赐教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值