前情提要: 当前在做的项目需要生成csv文件,当我添加中文后,文件乱码,截图如下:
解决方式:1.从用户层面来说
1.1 使用微软自带的工具就可以解决
1.2使用记事本的方式修改编码,网上教程很多,在此不赘述
2.对开发者来说,我是在linux下编程,本以为是因为文件编码的问题,后来查阅后发现是csv等文件需要有BOM头来验证,参考一下别人说的话:“因此如果我们查看无bom头编码的 csv 文件(例如 utf-8 ,在标准中默认是可以没有 bom 头的),Excel 只能自动按照默认编码读取,不一致就会出现乱码问题了。说完原理介绍一下解决方法。解决方法就是给csv文件添加bom头”
两行代码解决:
#include <stdio.h>
int main() {
FILE *fp;
char fileName[100];
char bom[] = {0xEF, 0xBB, 0xBF};
// 生成CSV文件
snprintf(fileName, sizeof(fileName), "IPCconf.csv");
fp = fopen(fileName, "w");
// 写入BOM头信息
fwrite(bom, sizeof(char), 3, fp);
// 写入CSV内容
// ...
fclose(fp);
return 0;
}
其中最主要的就是 fwrite(bom, sizeof(char), 3, fp); 在打开文件后对文件写入bom的设置,适用于UTF-8,其余的不清楚,发出来供自己以后参考