记事本支持保存的四种编码
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) |
1200 | Unicode |
1201 | Unicode (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) |
65001 | Unicode (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呢?
网上没搜到,如果读者有知道的还请不吝赐教!