在 Notepad++ 中保存后文件编码未保留

Fux*_*uxi 4 encoding notepad++ utf-8 bom

我正在使用 Notepad++ 来编辑我的 PHP 脚本。

但是,我发现了一个奇怪的问题:当将编码从 更改ANSIUTF-8 (without BOM)、保存、关闭、重新加载时——然后检查编码:仍然是ANSI

任何想法有什么问题?过去它总是对我有用。

Bob*_*Bob 8

这是预期的行为。

可能会发生文件以某种编码保存,但在 Notepad++ 中重新打开它时,会检测到另一种编码。这是一个技术限制,因为有时即使使用不同的编码,生成的文件也不会有所不同。如果保存文件时没有使用指示所用编码的特殊 BOM(字节顺序标记),则这一点最为明显。

ANSI 和 UTF-8 共享它们的前 128 个字符 (ASCII),如果您只使用这些字符,则无法区分它们。对于纯文本文件,没有指示编码的元数据,因此 Notepad++(和其他编辑器)所能做的就是查看文件中的字符/数据并进行猜测。

  • 如果文件有 BOM,NP++ 会检测到它并知道编码。
  • 如果文件是 HTML 或 XML,则从文件的第一行读取编码。
  • 否则,NP++ 会在 UCS-2LE、UCS2-BE 和 ANSI 之间进行猜测。您无法区分没有 BOM 的 UTF-8 编码文件和具有大量高位 ASCII 字符的 ANSI 文件。

http://sourceforge.net/projects/notepad-plus/forums/forum/331754/topic/3822723


理论上,PRacicot 的答案应该将所有 ANSI/UTF-8 文件(没有 BOM)作为 UTF-8 打开。在对类似堆栈溢出问题的回答中也推荐这样做。如果这对您不起作用,我不确定可以做什么。ANSI as UTF-8对我来说,编码在状态栏中指示。

  • @JonathonWisnoski 我相信这是因为使用 BOM 可能会破坏与需要 ASCII 的遗留(和其他)程序的向后兼容性。特别是,许多脚本解析器(可能包括 PHP)和某些 POSIX 系统上的 shebang 会出错。 (2认同)

PRa*_*cot 7

您可能希望在 Notepad++ 首选项中更改此设置。

进入菜单设置 -> 首选项 -> 新文档/默认目录。在糟糕的编码部分,勾选 UTF-8 without BOM 并勾选 Apply to open ANSI files。

通过选中应用于打开的 ANSI 文件,此首选项也将应用于 notepad++ 中当前打开的文档。

由于我还没有足够的积分来发布图片,这里是我上传图片的 postimage 链接:http ://postimage.org/image/4qza0bkv9/

祝你好运,编程愉快。


Apa*_*che 3

您必须更改选项Convert to ...而不是更改Encode to ...选项。
您可能还想在设置中更改此选项,以便所有新文件都将使用您选择的编码创建。

伊姆格