我在用着温SCP以便通过 SFTP 与运行 Linux 发行版的远程服务器协作。我还使用记事本++(最新版本)作为我的文本编辑器(编辑远程文件时)。
当我使用 WinSCP 在远程服务器中创建一个新文件时,使用以下命令:
Right click > New > File...
Notepad++ 打开空文件,但编码显示为美国国家标准代替UTF-8(无 BOM),这是我的默认设置。我甚至在 Notepad++ 中启用了“应用于打开的 ANSI 文件”选项
Settings / Preferences / New Document / Encoding /
UTF-8 without BOM / Apply to opened ANSI files
因此,我Encoding / Convert to UTF-8 without BOM
每次都必须手动选择,如果由于某种原因我忘记了必须执行该步骤,那么文件将保存为 ANSI,这可能会引起麻烦。
有没有办法让新文件从一开始就编码为不带 BOM 的 UTF-8?
答案1
检查 Notepad++ 源代码,我可以看到“应用于打开的 ANSI 文件”选项标签错误。应为“适用于已打开ASCII文件”因为它仅适用于 7 位(ASCII)文件。
空文件被“检测”为 8 位(ANSI),因此该选项永远不会适用于空文件。
UniMode um = UnicodeConvertor.getEncoding();
if (um == uni7Bit)
{
if (ndds._openAnsiAsUtf8)
{
um = uniCookie;
}
else
{
um = uni8Bit;
}
}
当文件为空时总是UnicodeConvertor.getEncoding()
返回。uni8Bit
我建议您将此报告为错误。
似乎也没有任何命令行选项来强制使用不同的编码。
答案2
这似乎已在 Notepad++ 6.4.5 中修复https://notepad-plus-plus.org/download/v6.4.5.html
修复 UTF-8(w/o BOM)检测错误。
但是,在 WinSCP 中新建文件,用 Notepad++ 打开时,编辑器右下角的编码显示为 ANSI。但是保存、关闭并再次打开文件时,编码为 UTF8。