分享一些经验,关于怎么创建一个unicode文本文件,并写入unicode文本(比如中文)...

第一,要使用fwprintf,例如:
fwprintf( fp, L"%s\r\n", str.c_str() );注意那个str,是wstring str

第二,打开文件准备写入的时候,要这样写:
fp = _wfopen( L"bad.txt", L"a+,ccs=UNICODE" );注意那个L"a+,ccs=UNICODE",表示用UNICODE方式打开。ccs=UNICODE这个写法很不常用

第三,也是最奇怪的,如果是写入一个已经存在的UNICODE文本文件,比如你先用记事本新建文件,然后另存为,选择编码方式为UNICODE,那么上述代码工作正常。

但是,如果是新建一个UNICODE文本文件,则即使你这样写:fp = _wfopen( L"error.txt", L"w+,ccs=UNICODE" );

结果你会惊讶地发现,这个新建的文本文件,还是ANSI的编码,所以此后再通过fwprintf写入也不会对。

最后我发现必须这样写:
WORD wSignature = 0xFEFF;

FILE* fp = _wfopen( L"error.txt", L"w+" );
fwrite( &wSignature, 2, 1, fp );
fclose( fp );

0xFEFF是UNICODE文本文件开头的BOM头,只有这样才能一下子新建一个UNICODE文本文件。此后再通过fwprintf写入,就一切OK了。

最后,_wfopen和fopen,其实功能上没有任何区别,唯一只是_wfopen接收的参数是wchar_t类型的。

转载于:https://www.cnblogs.com/snowraindy2014/p/3616328.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值