Eclipse代码块乱码和控制台中文输出乱码(gbk和utf-8的区别)


前言

最近刚开始学习java开发,这次也是第一次写博客,希望得到建议和指点。在开始学习后,先配置了环境,在汉化eclipse后,觉得应该学习英文版,又利用配置文件改回了英文,但是随之就出现了两个问题:
一是代码行里的中文汉字是乱码
在这里插入图片描述

二是用System.out.println输出中文控制台是乱码
在这里插入图片描述

在网上搜寻资料后终于解决。

先上结论,问题一是将workspace的编码格式和项目文件的编码格式都改为utf-8,问题二是将运行配置的格式改为GBK


一、GBK和UTF-8的区别是什么?

1、覆盖范围

GBK:主要为中国大陆地区设计,覆盖了简体中文、繁体中文字符集以及其他一些汉字扩展字符,总共能表示约20000多个汉字及符号。
UTF-8:是一种 Unicode 变长编码格式,旨在涵盖世界上几乎所有的字符和符号,包括拉丁字母、西里尔字母、阿拉伯字母、中文字符、日韩字符以及其他众多语言的字符,理论上可以编码超过百万种字符。

2、编码长度:

GBK:采用固定长度的双字节编码方式,每个字符由2个字节组成。
UTF-8:采用可变长度编码,对于英文字符、数字和某些符号,UTF-8使用1个字节;对于大部分常用汉字,UTF-8使用3个字节;对于极少数特殊字符,UTF-8最多可以使用4个字节。

3、空间占用:

GBK:由于其固定双字节设计,对于包含大量英文字符的文本,相对UTF-8来说可能占用较少的空间。
UTF-8:对于包含大量ASCII字符的文本,UTF-8具有良好的空间效率,但对于纯中文或混合中英文的文本,空间占用一般会大于GBK。

4、通用性和兼容性:

GBK:主要适用于中文环境,尤其在中国大陆地区较为普遍,但在全球范围内通用性较差,对于非中文字符的支持有限。
UTF-8:具有极高的通用性,是互联网上最常用的字符编码之一,广泛用于网页、电子邮件、JSON/XML等格式的数据传输,能够在任何支持UTF-8的环境下正确显示多种语言字符。

5、性能和效率:

GBK:由于编码长度固定,在处理纯中文文本时,计算和解码速度可能略快于UTF-8,同时在网络传输过程中,由于字节总数可能较少,理论上速度也会更快些。
UTF-8:在处理包含多种语言字符的文本时,由于需要动态解析字节序列以确定字符长度,可能会带来一定的性能损耗,但在现代软硬件优化下,这种影响已经大大降低。

6、总结

GBK更适合于单一中文环境下的应用,而UTF-8则因其广泛的国际兼容性和未来的扩展性而在全球信息化交流中占据主导地位。


二、如何设置eclipse

1.代码块乱码问题

第一步: Window–>Preferences–>General–>Workspace–>Text file encoding–>UTF-8;
第二步:项目右键,Properties–>Resource–>Text file encoding–>UTF-8;
第三步:文件右键,Properties–>Resource–>Text file encoding–>UTF-8;

其实这里起作用的顺序是文件>项目>workspace,也就是说前面两步可以不设置,直接设置文件的格式为UTF-8就行了。
到这一步,代码块中文乱码的问题就解决了。

2、控制台中文输出乱码

文件右键,Run As->Run Configurations->Common->Encoding->GBK;
设置完后,控制台输出就正常了。


总结

关于为什么设置成gbk后,控制台输出中文就正常了,小弟的猜测是我汉化了eclipse,导致编码格式不一致,只有设置成gbk后,编码格式一致才能输出正常,不知道正不正确,希望有大神指点。
另外:小弟刚开始学java,对于学习路线和未来职业规划不是很清晰,望有前辈分享!!

  • 22
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值