新手上路
- 积分
- 29
- 金钱
- 29
- 注册时间
- 2019-10-24
- 在线时间
- 7 小时
|
1金钱
用了以下两段程序
//根目录下创建1.txt
char*p;
p=(char*)malloc(sizeof(char)*50);
strcpy((char*)p,"0:/1.txt");
f_open(&fil,(const TCHAR*)p, FA_CREATE_ALWAYS|FA_WRITE);
//写入数据
u8 buffer[200]={0};
strcat((char*)buffer,"hello123");
f_write (&fil,&buffer,sizeof(buffer), &bww);
f_close(&fil);
这个时候用电脑打开1.txt文档可以正确查看文档内容且编码格式为UTF-8。
但是如果更改内容:
//写入数据
u8 *buffer;
//使用malloc申请
buffer=(u8*)malloc(sizeof(u8)*200);
memset(buffer,0,200);
strcat((char*)buffer,"hello123");
f_write (&fil,&buffer,sizeof(buffer), &bww);
f_close(&fil);
free(buffer);
这个时候用电脑打开1.txt文档发现文件内容就成乱码了,编码格式ASCII,重新用UTF-8另存txt仍然是乱码
但是两种情况下调试窗口的buffer值相同。
求助各位大佬这是什么情况,我是真的匪夷所思啊
|
最佳答案
查看完整内容[请看2#楼]
f_write只是把数据的数据写入文件,不会作改变。
“编码”是记事本对数据与汉字的转换。
建议用ultra edit查看原始数据,就像串口助手的HEX模式。
对了,建议在f_write之前将buffer中的数据用串口发出来看看。
|