1

我正在重新投入开发,并想为 HTML5/JQuery 找到一个好的编辑器。

能够以 UTF-8 保存文件很重要。

但是,虽然我在NetBeans 7.0中将我的项目设置为以 UTF-8 编码,但当我在项目中创建一个文件,然后在 Notepad++ 中查看它时,该文件以 ANSI 编码,我必须手动将编码设置为 UTF- 8:

在此处输入图像描述

Aptana Studio 3中,我将工作区设置为 UTF-8 编码,我的项目继承自该编码,但是当我在项目中创建一个文件并在 Notepad++ 中查看它时,它以 ANSI 编码,我必须手动更改编码转为 UTF-8:

在此处输入图像描述

所以我尝试了Komodo Edit 7并在文件中手动将编码设置为 UTF-8,保存文件,在 Notepad++ 中查看它说文件是 ANSI。

在此处输入图像描述

我注意到在这些编辑器中的任何一个中,如果我在文件中放入了德语变音符号,那么 Notepad++ 将其显示为“ANSI as UTF-8”,但我仍然必须在 Notepad++ 中手动将其更改为 UTF-8,它将保留。

我想要一个以 UTF-8 保存的编辑器的原因是我记得几年前有一个项目,文件中有德语和法语字符,在各种编辑器中查看和保存它们后,这些字符将被替换为垃圾字符. 解决方案是始终将文件的编码初始设置为 UTF-8。

我认为编辑器现在已经很先进了,如果您指定文件应该以 UTF-8 保存,那么它们实际上以每个现代文本编辑器都可以识别的方式保存在 UTF-8 中。不是这样吗?关于 UTF-8,我对现代文本编辑器和开发环境有什么不了解的地方?

我怎样才能让这些编辑器以 UTF-8 编码保存他们的文件?

4

2 回答 2

3

仅包含 ASCII 表中也存在的字符(前 128 个 Unicode 字符,即您的基本字母数字字符)的 UTF-8 编码文件与 ASCII/ANSI 编码文件无法区分。我的猜测是 Notepad++ 根本无法区分(因为没有)并且默认为 ANSI。当您包含一个不在 ASCII 表中的字符时,您可以看到差异。通过“ANSI as UTF-8”,我只能猜测它的意思是“此文档包含 ANSI 表(又名 Latin-1)中的字符并以 UTF-8 保存”。

换句话说,您的 IDE 可能没问题,问题出在 Notepad++ 上。

尝试像汉字这样的字符,这将产生一个非常独特的 UTF-8 字节序列,它肯定不是ANSI。

于 2012-04-25T03:58:55.220 回答
1

从我在这个主题上看到的情况来看,Notepad 的 UTF-8 等同于 Notepad++ 的 UTF-8,这意味着包含 BOM。如果使用此编码保存文件并在 NetBeans 中打开,它实际上会显示一个-或多个BOM 序列的字符(取决于项目或 IDE 的编码是否设置为 UTF-8。)但是如果您保存Notepad++ 中的文件编码为“UTF-8 without BOM”,并且将您的项目定义为 UTF-8 或将您的 netbeans_default_options 包含在其中-J-Dfile.encoding=UTF-8,您将看到我认为应该是 UTF-8 的内容。不幸的是,如果您尝试在 NetBeans 中编辑此文件而不包含 ANSI 代码集之外的字符,您会看到您在问题中提到的行为,该文件的编码设置为 ANSI。

因此,为了使这成为您问题的“某种”答案,请记住并非所有编辑器的 UTF-8 概念都是相同的。Notepad++ 提供了关于文件真正编码的最实际信息。我想说在 Linux 或 Mac 环境中开发可能是确保本地化正确的一个不错的选择,但在 Windows 上,一个不错的解决方法可能是在文件中包含一个非 ANSI 字符以确保它始终保存为 UTF-8(非 BOM)文件。顺便说一句,这一切都是针对 NetBeans 开发的。我没有和其他人一起测试过,不过我敢打赌,如果他们有非 ANSI 字符,他们会在 Windows 机器上正确保存文件。对不起kluge团伙,但无论哪种方式,我希望它可以帮助那些在同样问题上挣扎的人。

于 2013-06-27T02:05:26.053 回答