java初学者关于DOS控制台输出中文时乱码的问题

我以前是用记事本编代码的没出现过问题,但今天我用Notepad++编写代码是发现用System.out.println()语句中输出的中文字符串都是乱码,我在网查了一下好... 我以前是用记事本编代码的没出现过问题,但今天我用Notepad++编写代码是发现用System.out.println
()语句中输出的中文字符串都是乱码,我在网查了一下好像与格式编码有关Notepad++默认的格式编码是
UTF-8无DOM编码格式,当我把编码格式改成ANSI是DOS控制台就能正常输出了。那么着是不是应为DOS控制
台不支持UTF-8无DOM编码格式了?但如果不支持那为什输出英文字符串就没问题了?是不是UTF-8的英文
编码与ANSI是一样的了?请高手讲一些转码方面的知识吧!
展开
 我来答
超级DA玩家
推荐于2016-09-07 · TA获得超过356个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:76.6万
展开全部

亲爱的朋友,你好!

  1. Java编译器只支持ANSI编码的源文件,无论源文件有没有BOM,也无论源文件使用了什么编码,Java编译器都以ANSI编码的方式读取源文件(注意,含有BOM的源文件将出现编译错误,UTF-16编码的源文件也会出现编译错误)。这一点不同于C/C++编译器,VC和GCC编译器都支持含有BOM的UTF-8编码的源文件。(DOM?BOM!)

  2. Java编译器以ANSI(Windows简体中文版操作系统的ANSI编码为GBK)编码的方式读取Java源文件进行编译,将源代码中的字符串(String)和字符(char)以UTF-8的形式存储在生成的字节码.class文件中。(注意:根据JDK API文档,Java语言以UTF-16的形式表示字符和字符串。然而事实上,Java字节码文件却以UTF-8的形式存储字符和字符串。)

  3. 源文件中使用UTF-8编码的字符串,调用println函数发往控制台的也是UTF-8编码的字符串;源文件中使用ANSI编码的字符串,调用println函数发往控制台的还是ANSI编码的字符串;

  4. 为什么会乱码?因为DOS控制台并不像记事本那样能够自动识别字符串的编码,DOS控制台以预设的编码对字符串进行解析并加以显示。DOS中用于解析字符串的编码我们是可以自主设置的,在DOS窗口的标题栏右击,选择”默认值“,在对话框中的”默认代码页“中可以设置”GBK“或者”OEM-美国“为DOS默认的编码。你说的不错,DOS控制台确实不支持UTF-8的编码格式。

  5. 为什么输出英文字符串就没问题?因为UTF-8字符集和ANSI字符集都是ASCII字符集的超集,使用无BOM的UTF-8保存Java源文件,非ASCII字符只可能出现在字符串或字符中,而不会出现在源文件的其他位置,所以编译器并不会报错。UTF-8编码一般使用三个字节表示中文字符,ANSI编码使用2个字节表示中文字符。你的推理能力很好很强大,UTF-8的英文编码与ANSI是完全一样的。

  6. BOM,Byte Order Mark,字节顺序标记。BOM其实很简单,就是文本文件开头的几个具有特殊含义的字节,例如,UTF-8的BOM是EF BB BF。以前文本文件是没有BOM的,以什么编码解析文本文件只能由文本编辑器自动判断,可是文本编辑器有时候会判断失误,使文本文件不能被正确读取。为了解决此问题,人们就发明了BOM,用BOM来标记文本文件使用的字符编码,这样文本编辑器就可以以BOM所代表的字符编码正确读取文本文档了。

  7. 朋友,字符编码的知识一两句话是说不清楚的,需要自己努力的学习与体会。Java语言建立于虚拟机之上,即使从事Java开发多年的程序员,也未必精通字符编码的知识。

5544ppo
2013-06-02 · TA获得超过1370个赞
知道小有建树答主
回答量:364
采纳率:0%
帮助的人:325万
展开全部
首先,你的操作系统肯定是中文环境下,所以你使用记事本的话,就按照GBK对文字进行编码。

但是你现在用notepad的话,因为这个老外开发的,所以会按照ISO-8859来对数据进行编码,但是显示的时候又会按照GBK来进行编码,所以就会出现乱码。

英文之所以没问题是因为所有的字符集(ISO-8859,GBK,UTF-8,ASC||)等,对英文的编码都是相同的,所以英文绝对不会乱码的。但是GBK,UTF-8字符集中才包含中文字符,ISO-8859,ASC||不包含中文字符,所以会出现乱码。

关于乱码怎么解决你学习到IO流的时候自然就都会了,一两句话也说不清。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式