windows->reference->General->contest type->Default encoding

eclipse 中文显示乱码问题总结

将外部源文件导入到Eclipse 工程后,经常遇到各种乱码问题,究其原因主要是因为文件本身的encoding type与eclipse 用于打开改文件的编辑器所使用的encoding type不一致导致。那么eclipse 的编辑器到底是如何决定采用哪种encoding type编辑某一个文件呢?

我们需要知道编辑器当前是采用什么encoding type 在编辑文件,可以选中文件右键property->resource看到:

这里根据个人的使用经验,可能会出现三种情况:

1、 inherit from container

2、 determined from content type: xxx

3、 determined from content: xxx

那么以上三种决定文件encoding type判定分别表示什么意思呢?

熟悉eclipse 使用的兄弟都清楚,encoding type相关有四个地方可设置:

1、全局(windows->reference->General->workspace)

2、工程(project->property->resource)

3、文件(选中文件右键property->resource),可看到当前编辑器所使用的encoding type ,这里可以直接更改编辑器编辑该文件时采用的encoding type并直接生效。

4、全局文件的content type(windows->reference->General->contest type->Default encoding)

1、2、3逐级继承,这个比较容易理解,这里不详细介绍。

值得一提的是,在工具可设置的范围内4优先级是最高的,即如果设置了某类型文件的content type的default encoding,那编辑器会优先根据该类型文件设置的默认编码格式来编辑文件,此外还有一种情况,如果该文件在文件头部携带一个“编码字节序标识”(Encoding Bit Order Mark ,简写为BOM ),eclipse 编辑器会优先根据该标志指定的encoding type 来进行文件编辑,这个是工具无法设置的。


文件本身Content (BOM )优先级最高,eclipse 设置content type次之,继承的优先级最低;分别对应前面描述到的3\2\1三种文件encoding 判定方式。

至此,我们已经大致了解了eclipse 编辑器如何判定文件encoding type的方法,大部分乱码的问题都可以找到解决之道了。

还要强调一点的是,从外部引入多个文件,或者多人(使用不同编辑工具)开发的多个文件,如果采用encoding 方式不一致,而且有些文件带BOM ,有些不带,这种情况下,如果把这些文件import 到eclipse (或其他任一编辑器)的一个工程内,会遇到很多编码问题,而且往往找不到一个简单兼容方式。所以最佳的方式是在工程启动之时约定好encoding type 和具体工具编码相关配置。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值