在VS2015中,如何在没有BOM的情况下以UTF-16 LE编码保存文件



在这个链接中,您将找到我在下面复制的表1。请注意,该表第三列的标题指定为:UTF-16LE w/ or w/o BOM。我能够保存包含以下片段的文件,

#include <iostream>
int main()
{
char c[] = u8"屰";
int i = 1;
}

通过选择VS2015中File菜单下的菜单选项Advanced Save Options...,其中Unicode codepage 1200恰好与UTF-16LE encoding with BOM对应。这可以在下面的第二张图片中查看,我粘贴了一份用二进制编辑器获得的文件图像的副本。可以看出,文件上的前两个字节是0xFF 0xFE,表示UTF16-LE encoding的BOM。但我在Advanced Save Options...对话框中找不到用UTF-16LE encoding without BOM保存文件的选项。我该怎么做?

表1-当前使用各种编码编译代码时的结果示例。

UTF-16LE w/或w/o BOM
文件编码UTF-8 w/BOMUTF-8w/o BOM
源文件中表示屰E5 B1 B070 5CE5 B1B08C DB
源转换UTF-8->UTF-8UTF-16LE->UTF-81252->UTF-81252->UTF-8
内部(UTF-8)表示法E5 B1 B0C3 A5 C2 B1 C2 B0C5 92 C3 9B

这不是VS2015的选项。即使是流行的Notepad++也没有针对没有BOM的UTF-16的选项。

如果这样做只是为了实验,请在保存后使用任何十六进制编辑器删除BOM表。VS2015中内置了一个二进制编辑器。将文件保存为带有BOM的UTF-16LE后,使用二进制编辑器关闭并重新打开该文件,然后删除BOM。不过,我发现VS2015在没有它的情况下无法正确打开文件,这可能是该选项不可用的原因。

相关内容

最新更新