acmilan作者
11年2个月前IP:四川
792984
6楼
IsTextUnicode这个函数只有在英文系统(非Unicode语言为英语,代码页1252)中才有用,在中文系统中根本没有任何用处。因为
GBK跟UTF-16冲码的太多了。无BOM的UTF-16文件在英文系统中打开正常,但是在中文系统中一打开必定乱码。

如果将文件按照"r+b"或"w+b"或"a+b"打开(_O_BINARY),C运行库将不会自动转换"\n"和"\r\n",也不会自动添加BOM。这个情况下使用fgets、fputs、fprintf、fgetws、fputws、fwprintf的作用就是将字符串原封不动地输入输出,fputs输出窄字符,而fputws输出宽字符。

如果在文件中按"r+b"或"w+b"或"a+b"输出宽字符,想在记事本中正常打开的话,需要手动在文件开始的地方添加BOM,手动输出BOM可以使用fputwc(L'\ufeff', f)。
评论
文号 / 792984

千古风流
名片发私信
学术分 4
总主题 466 帖总回复 2942 楼拥有证书:进士 学者 笔友
注册于 2009/05/30 21:22:42最后登录 2019/01/31 17:16:38
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的