永发信息网

C语言FILE不能创建unicode编码文本文件,文件头加0xff和0xfe之后fwprintf输出的unicode文本都变成乱码

答案:2  悬赏:0  手机版
解决时间 2021-03-26 01:52
C语言FILE不能创建unicode编码文本文件,文件头加0xff和0xfe之后fwprintf输出的unicode文本都变成乱码
最佳答案
你到底用二进制写 还是用ASCII码写文件,你打开时记事本使用的是ASCII码。
用二进制方式创建文件,文件开头需要写入0xff、0xfe两个字节,然后再写Unicode字符串(也是按二进制数据写入)。
fwprintf需要一个FILE句柄,关键是看你创建FILE句柄时是否让这个文件以UNICODE形式存储数据了。类似:

FILE* fileHandle;

// Create an the xml file in text and Unicode encoding mode.
if ((fileHandle = _wfopen( L"_wfopen_test.xml",L"wt+,ccs=UNICODE")) == NULL) // C4996
// Note: _wfopen is deprecated; consider using _wfopen_s instead
{
...........
}

下面的示例来自MSDN:

// crt__wfopen.c
// compile with: /W3
// This program creates a file (or overwrites one if
// it exists), in text mode using Unicode encoding.
// It then writes two strings into the file
// and then closes the file.

#include
#include
#include
#include

#define BUFFER_SIZE 50

int main(int argc, char** argv)
{
wchar_t str[BUFFER_SIZE];
size_t strSize;
FILE* fileHandle;

// Create an the xml file in text and Unicode encoding mode.
if ((fileHandle = _wfopen( L"_wfopen_test.xml",L"wt+,ccs=UNICODE")) == NULL) // C4996
// Note: _wfopen is deprecated; consider using _wfopen_s instead
{
wprintf(L"_wfopen failed!\n");
return(0);
}

// Write a string into the file.
wcscpy_s(str, sizeof(str)/sizeof(wchar_t), L"\n");
strSize = wcslen(str);
if (fwrite(str, sizeof(wchar_t), strSize, fileHandle) != strSize)
{
wprintf(L"fwrite failed!\n");
}

// Write a string into the file.
wcscpy_s(str, sizeof(str)/sizeof(wchar_t), L"
");
strSize = wcslen(str);
if (fwrite(str, sizeof(wchar_t), strSize, fileHandle) != strSize)
{
wprintf(L"fwrite failed!\n");
}

// Close the file.
if (fclose(fileHandle))
{
wprintf(L"fclose failed!\n");
}
return 0;
}

这个
全部回答
我不会
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
ps3 如龙1 28号钥匙为什么支线做完没给
大家都记得教过自己的老师吗
已知<1二25<2=46、那么<3二()这是一个()三角
拿破仑和希特勒很 相似,为什么名声却截然相
微鲸W43F电视采用什么面板
股市第一天收光脚阳线第二天收小阳星
个人用处臭剂注册商标属于哪一类?
瓶装氧气和制氧机所制的氧气哪一个更纯
九个点排成三行 用一条线 连起来,最多拐三个
电磁炉命名,
水性环氧树脂的性能特点有哪些?
蓝光御江台二期什么时候交房
焕颜spa美容护发养生馆地址有知道的么?有点
巴金的长篇小说,爱情三部曲,1982年获得了什
为什么有些人就是可以这样欺骗别人
推荐资讯
古南丰酒多少钱一瓶
教育分期贷款35000,24期,每期还1600,利息这
ay杨佬叁 为什么歌词
大连财经学院好就业吗
咸干鱼吃多了有害吗?
UG4.0Z中的部件余量和壁余量有什么区别?
吉林磐石烟筒山镇那地方有钱吗,一般结婚需要
TL431管脚如何识别
求成都温江的家乐福地址
电脑显卡散热鳞片是什么材料做的
美国天亮的时候,中国是什么天
红米4和华为P7哪个好些
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?