• Eclipse中各种编码格式及设置


    操作系统:Windows 10(家庭中文版)

    Eclipse版本:Version: Oxygen.1a Release (4.7.1a)

    刚看到一篇文章,里面介绍说Ascii、Unicode是编码,而GBK、UTD-8等是编码格式

    Java中的编码问题(by 迷失之路):https://www.cnblogs.com/zj0208/p/7019102.html

    涉及到下面几个编码格式(BMGS):

    操作系统(OS)编码格式、JDK的编码格式、JVM的编码格式、Eclipse的编码格式、工作空间(Workspace)的编码格式、

    项目编码格式、文本文件编码格式

    1.操作系统BGMS

    我的是Windows 10家庭中文版,因此,其BMGS为GBK。

    2.JDK的BMGS、JVM的BMGS

    JDK的编码继承了操作系统的BMGS,因此,安装好JDK后,其默认BMGS为GBK,同OS。

    在没有特别设置的情况下,JVM启动时的BMGS和JDK相同,为GBK。不过,可以在JVM启动时通过命令修改其BMGS。

    注意:还需深究

    修改JVM的默认BMGS:http://notebookdong.iteye.com/blog/2237550

    添加环境变量、JVM启动时添加参数:这两种方式在我看来都比较麻烦或影响很大

    更多参考:

    更改JDK默认编码为UTF-8:http://blog.163.com/han_sboy@126/blog/static/2167612420155164539654/

    这篇文章介绍的更深入,还没仔细看。

    3.Eclipse的BMGS、Eclipse下Workspace的BMGS

    Eclipse的BGMS是一个伪概念,实际上是不存在的,但是,在Eclipse我们可以全局性地设置工程的BMGS,而这个BMGS是指Workspace的。

    打开Window->Preferences面板,选中其中的General->Workspace,在此面板的底部有一个Text file encoding配置项,默认是GBK,即运行Eclipse

    的JVM的BMGS。

    修改这里的BMGS后,即同时修改了此工作空间下所有的工程、文本文件的BMGS,影响很大

    比如,一个Java工程及其下的Java文件的BMGS是GBK,若是在这里修改为UTF-8后,此Java工程及其下的Java文件的BMGS也随之而改,此时,

    之前Java文件中的非ASCII字符则会变为乱码,严重者会导致程序无法运行

    4.项目的BMGS

    项目存在于Workspace中,新建项目会继承(Inherited)Workspace的BMGS,但其BMGS可以单独设置。

    两个途径:

    a.项目名上右键,选择Properties,进入项目的属性设置面板,在第一个属性项Resource的配置项中就可以设置——Text file encoding,

    默认是继承,可以也可以选择单独配置;

    b.选中项目名称,选择Eclipse菜单栏的Project->Properties菜单;

    设置为UTF-8;

    在这里修改完工程的BMGS后,工程下的文件的BMGS也改变为UTF-8了。

    Text file encoding中的Store the encoding of derived resources separately是什么意思呢?

    经过试验,在选中此选项后,在工程的.settings目录下的org.eclipse.core.resources.prefs文件中会增加下下面一行:

    separateDerivedEncodings=true

    需要注意的是,org.eclipse.core.resources.prefs文件在没有修改工程的BMGS是不存在的!

    那么,有什么更大的影响呢?和项目迁移有关系吗?

    5.文本文件的BMGS

    文本文件可以简单地理解为各种程序源文件,其BMGS可以单独修改的,默认是继承了工程的BMGS。

    右键进入文件的属性配置面板,或者,选择文件后,从菜单File->Properties进入,此面板中也有一个Text file encoding,修改它即可。

    6.修改BMGS时的注意事项

    a.优先级

    Workspace的BMGS 低于 项目的BMGS 低于 文本文件的BMGS

    b.覆盖范围

    Workspace的BMGS 大于 项目的BMGS 大于 文本文件的BMGS

    c.文本文件存在非ASCII字符时,更需要谨慎配置各个级别的BMGS

    d.为何要设置为UTF-8

    一是国际化支持更好、更大程度地支持中文,二是更有利于团队之间的合作开发。

    在我的Windows 10中,默认中文BMGS是GBK,而在Windows XP、2000操作系统中,默认的BMGS为GB18030。

    是否将Workspace的BMGS设置为UTF-8?

    是否将项目的BMGS设置为UTF-8?

    是否将文本文件的BMGS设置为UTF-8?

    我的建议是:

    设置Eclipse的Workspace的BMGS为UTF-8,再设置工程的BMGS为UTF-8,文本文件的无需单独设置。

    e.项目迁移(需要验证)

    项目在一个Eclipse上是继承BMGS,为UTF-8。

    当其迁移到Workspace的BMGS为GBK的的Eclipse时,是否能成功运行?

    注释是否不变为乱码?因为其配置为继承,此时,项目的BMGS将更改为GBK。

    f.还有文章提到修改Java Source File的Default Coding

    修改Java Source File这种文件的Default encoding为UTF-8:输入,更新即可。

    g.关于PyDev开发的Python工程的BMGS设置

    遵循本文前面讲的,需要【单独设置】工程的BMGS为UTF-8,而工程里面的文件的BMGS则保持默认的继承。

    有些问题:

    Python 2的默认编码是Ascii,而Python 3的是UTF-8,基于不同Python版本建立的工程 怎么设置BMGS呢?

    Python 3可以采取上面提到的建议,而Python 2呢?还需要深究

    h.当前Eclipse中的Python File的Default coding

    在File associations中选择一个项目,再输入想要的BMGS,保存即可生效。

    需要注意的是,

    Python 2的默认编码为Ascii,Python 3的为utf-8,若是项目会在两者之间切换,可以【在项目中单独设置、,而不是在这里做全局设置。

     参考链接-关于Python2.X与Python3.X的编码问题:https://blog.csdn.net/mickeymouse1928/article/details/70168794

    -------

    Version 1:2018-04-27

    第一个版本,待有更多实践后,可能会更新此博文。

  • 相关阅读:
    Codeforces Round #551 (Div. 2) 题解
    【BZOJ5496】[十二省联考2019]字符串问题(后缀树)
    省选题记录
    【BZOJ5495】[十二省联考2019]异或粽子(主席树,贪心)
    Codeforces Global Round 2
    Android Studio安装使用图文教程(转)
    JAVA基础学习day15--集合二 TreeSet和泛型
    AndroidDevTools下载地址
    JAVA基础学习day14--集合一
    JAVA----编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符
  • 原文地址:https://www.cnblogs.com/luo630/p/8962899.html
Copyright © 2020-2023  润新知