Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 源代码应该以UTF-8格式保存吗_Java_Eclipse_Encoding_Utf 8 - Fatal编程技术网

Java 源代码应该以UTF-8格式保存吗

Java 源代码应该以UTF-8格式保存吗,java,eclipse,encoding,utf-8,Java,Eclipse,Encoding,Utf 8,以UTF-8格式保存源代码有多重要 默认情况下,Windows上的Eclipse使用CP1252字符编码。CP1251格式意味着可以保存非UTF-8字符,如果您从Word文档复制并粘贴注释,我已经看到这种情况 我问这个问题的原因是,出于习惯,我将Maven编码设置为UTF-8格式,最近它捕获了一些不可映射的错误 (更新)请添加这样做的任何原因以及原因,是否存在一些应该知道的常见问题 (更新)你的目标是什么?为了找到最佳实践,当问我们为什么要使用UTF-8时,我有一个很好的答案,现在我没有 是的,

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

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

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

(更新)请添加这样做的任何原因以及原因,是否存在一些应该知道的常见问题


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

是的,除非您的编译器/解释器无法处理UTF-8文件,否则这绝对是一条路。

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


如今
UTF-8
是一个不错的选择,因为它涵盖了人类世界意识到的每一个字符,并且在任何地方都得到了支持。所以,是的,我也会设置工作区编码。我也这么用。

你的目标是什么?平衡你的需求和这个选择的利弊

UTF-8专业版

  • 允许在不转义的情况下使用所有字符文字
UTF-8缺点

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

  • 字符/字节映射由多种编码共享
    • 使源文件非常可移植
    • 通常无需指定编码元数据(因为如果将文件重新编码为UTF-8、Windows-1252、ISO 8859-1以及大多数UTF-16和/或EBCDIC的缩写,则文件将是相同的)
ASCII Cons

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

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

我不认为这个问题的答案是肯定的还是否定的。我想说的是,应该使用以下准则来选择编码格式,按照列出的优先级顺序(从高到低):

1) 选择工具链支持的编码。这比以前容易多了。即使在最近的记忆中,许多编译器和语言基本上只支持ASCII,这或多或少迫使开发人员使用西欧语言进行编码。如今,许多较新的语言支持其他编码,几乎所有体面的编辑器和IDE都支持非常长的编码列表。还是。。。有足够多的坚持者,您需要在确定编码之前仔细检查

2) 选择支持尽可能多的字母表的编码。我把它放在次要位置,因为坦率地说,如果您的工具不支持它,那么您是否更喜欢编码其实并不重要


UTF-8在当今世界的许多情况下都是一个很好的选择。这是一种丑陋、不雅的格式,但它解决了一系列破坏其他编码的问题(即处理遗留代码),而且它似乎越来越成为字符编码的事实标准。它支持每一个主要的字母表,地球上几乎每一个编辑器都支持它,而且许多语言/编译器也支持它。但是正如我上面提到的,有足够多的遗留问题,在你最终确定之前,你需要从头到脚仔细检查你的工具链。

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

Java语言和API规范需要UTF-8支持,因此就标准工具而言,您肯定没问题,而且我已经很久没有看到一个不支持UTF-8的像样的编辑器了


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

…在javac中,可以通过
-编码
参数来控制。说得好,+1。什么鲱鱼?如果源代码是在Windows上构建并在*nix上执行的,那么这就是定义编码的一个很好的理由吗?我认为这很少见,但很有可能。例如,是的。默认编码即在两种平台上不同。但是,这不会以任何方式影响Java代码的技术功能(Java文字/关键字已经是ASCII的一部分,它基本上是所有其他编码的基础(EBCDIC除外,但这是另一种情况)),但它可能会导致错误的输入/输出。不,Java标识符不一定只是ASCII字符。这是一个有效的int声明(至少javac和eclipse接受):inté\u1212@penpen:我说的是文字/关键词,比如
public
class
null
,等等,而不是标识符。你的目标是什么?为了找到最佳实践,当问我们为什么要使用UTF-8时,我有一个很好的答案——感谢这篇文章。将源代码存储为UTF-8只有一个很好的理由:如果您使用需要非ASCII字符的语言进行注释。对于UI/消息,字符串应以某种形式存储