我的html文件中有一个BOM字符。我想把它去掉。我已经搜索了很多,使用了很多脚本等等。。但是没有人工作。我也下载了notepad++,但在它的编码菜单中没有编码"UTF8 without BOM“。如何删除物料清单字符?谢谢。

发布于 2015-10-07 15:50:20
如果你看一下同样的菜单。单击“转换为UTF-8”。

发布于 2017-06-22 08:58:56
你可以使用vim来解决这个问题,你可以很容易的使用MinGW-w64 (如果你已经安装了Git )或者Cygwin。
所以,关键是要使用:
-s,它将执行一个带有vim命令的vim脚本。-b,它将以二进制模式打开你的文件,在那里你会看到那些笨拙的字节-n,这是非常重要的!此选项拒绝使用交换文件,因此您的所有工作都在内存中运行。它为您提供了保证,因为如果文件很大,交换文件可能会误导进程。也就是说,让我们来看看代码!
脚本首先创建一个简单的文件,这里命名为‘
echo 'gg"+gPggdtCZZ‘>脚本
...this奇怪的字符串告诉vim“转到文件的开头,复制第一个单词并将其粘贴到光标后面,因此删除所有内容,直到字符'C',然后,保存文件”
注意:如果您的文件以'C‘以外的其他字符开头,则必须指定它。如果您有不同的“第一个字符”,您可以按照逻辑创建一个bash脚本,该脚本将读取第一个字符,并在上面的代码片段中为您替换它。
vim -n -b -s script
发布于 2020-07-06 07:49:49
我相信这不会被视为一个问题。当它为时,一个有问题的只有3个字节的EF BB BF。我们就不能删掉这个吗?或者更改为某项内容,然后再次关闭文件?
无论如何,下面这个东西可以做这个把戏,并将BOM更改为‘*’。运行方式
x file 其中,file是文件的名称。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv)
{
const unsigned char BOM[3] = { '\xEF', '\xBB', '\xBF' };
char file_name[64] = { "target.csv" };
if (argc > 1) strcpy(file_name, argv[1]);
FILE* one = fopen(file_name, "r+b");
if (!one) return -1;
unsigned char buffer[64];
int n = fread(buffer, 1, 3, one);
if (n != 3)return -2;
if (memcmp(buffer, BOM, 3) != 0)
{ printf("file '%s' has no BOM\n", file_name);
fclose(one);
return 0;
};
n = fseek(one, 0, SEEK_SET);
if (n != 0) return -3;
buffer[0] = buffer[1] = buffer[2] = '*';
n = fwrite(buffer, 1, 3, one);
if (n == 3)
printf("Byte Order Mark changed to '***'\n");
else
printf("Error writing to file\n");
fclose(one);
return 0;
}https://stackoverflow.com/questions/32986445
复制相似问题