源代码是否应以UTF-8格式保存

JAR*_*ARC 33 java eclipse encoding utf-8

以UTF-8格式保存源代码有多重要?

Windows上的Eclipse默认使用CP1252字符编码.CP1251格式意味着可以保存非UTF-8字符,如果您从Word文档中复制并粘贴注释,我会看到这种情况.

我问的原因是因为出于习惯,我将Maven编码设置为UTF-8格式,最近它捕获了一些不可映射的错误.

(更新)请添加任何理由以及为什么,是否有一些应该知道的常见问题?

(更新)你的目标是什么?为了找到最佳实践,所以在问我们为什么要使用UTF-8时,我有一个很好的答案,现在我没有.

McD*_*ell 25

你的目标是什么?平衡您的需求与此选择的利弊.

UTF-8优点

  • 允许使用所有字符文字而不\uHHHH转义

UTF-8缺点

  • 使用非ASCII字符文字而不会\uHHHH增加字符损坏的风险
    • 可能会出现字体和键盘问题
    • 需要在所有工具(编辑器,编译器构建脚本,差异工具)中记录和强制使用UTF-8
  • 注意字节顺序标记

ASCII优点

  • 字符/字节映射由各种编码共享
    • 使源文件非常便携
    • 通常不需要指定编码元数据(因为如果将文件重新编码为UTF-8,Windows-1252,ISO 8859-1以及大多数缺少UTF-16和/或EBCDIC的文件,则文件将是相同的)

ASCII缺点

  • 有限的字符集
  • 这不是20世纪60年代

注意:ASCII是7位,不是"扩展",不要与Windows-1252,ISO 8859-1或其他任何东西混淆.

  • 将源存储为UTF-8只有一个很好的理由:如果您使用需要非ASCII字符的语言进行注释.对于UI /消息,字符串应存储在某种资源文件/消息目录中.良好的国际化实践. (2认同)

Bal*_*usC 6

重要的是至少你需要与用于避免鲱鱼的编码保持一致.因此,不是,X在这里,Y在那里和Z在其他地方.在编码X中保存源代码.将代码输入设置为编码X.将代码输出设置为编码X.将基于字符的FTP传输设置为编码X.Etcetera.

如今它UTF-8是一个很好的选择,因为它涵盖了人类世界所知道的每一个角色,并且在任何地方都得到了支持.所以,是的,我也会为它设置工作区编码.我也这样使用它.


fin*_*nnw 6

Eclipse使用平台默认编码的默认设置是一个糟糕的决定恕我直言.我发现有必要在安装后立即将默认值更改为UTF-8,因为我现有的一些源文件使用它(可能来自网页复制/粘贴的片段).

Java语言和API规范需要UTF-8支持,因此就标准工具而言你绝对没问题,而且我已经看了很长时间,因为我看到了一个不支持UTF-8的体面编辑器.

即使在使用JNI的项目中,您的C源通常也是US-ASCII,这是UTF-8的子集,因此在同一个IDE中打开它们都不会成为问题.