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

时间:2010-02-01 16:40:41

标签: java eclipse encoding utf-8

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

Windows上的Eclipse默认使用CP1252字符编码。 CP1251格式意味着可以保存非UTF-8字符,如果您从Word文档中复制并粘贴以进行评论,我就会发现这种情况。

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

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

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

5 个答案:

答案 0 :(得分:25)

你的目标是什么?平衡您的需求与这种选择的利弊。

UTF-8优点

  • 允许在没有\uHHHH转义
  • 的情况下使用所有字符文字

UTF-8缺点

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

ASCII专业人士

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

ASCII缺点

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

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:6)

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

Java语言和API规范需要UTF-8支持,因此就标准工具而言,你肯定没问题,而且我已经看了很长时间,因为我看到了一个不支持UTF-8的不错的编辑器。 / p>

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

答案 3 :(得分:2)

是的,除非您的编译器/解释器无法使用UTF-8文件,否则它绝对是您的选择。

答案 4 :(得分:2)

我认为这个问题确实没有答案。我会说应该使用以下指南来按照列出的优先顺序(从最高到最低)选择编码格式:

1)选择工具链支持的编码。这比过去容易得多。即使在最近的内存中,许多编译器和语言基本上只支持ASCII,这或多或少地迫使开发人员使用西欧语言进行编码。目前,许多较新的语言支持其他编码,几乎所有体面的编辑器和IDE都支持极长的编码列表。仍然......还有足够的保留,您需要在结算编码之前仔细检查。

2)选择一个支持尽可能多的字母表的编码。我将此作为次要优先级,因为坦率地说,如果您的工具不支持它,那么您是否更喜欢编码并不重要。

在当今世界的许多情况下,UTF-8是一个很好的选择。它是一种丑陋,不优雅的格式,但它解决了许多破坏其他编码的问题(即处理遗留代码),并且它似乎越来越成为字符编码事实上的标准。它支持每个主要的字母表,现在地球上的每个编辑器都支持它,并且一大堆语言/编译器也支持它。但正如我上面提到的那样,足够的遗产保留,您需要在最终确定之前对端到端的工具链进行双重检查。