关于fopen()函数的一些疑问

会瞬移的猪 2018-12-20 09:41:49
疑问1、3文档链接https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/reference/fopen-wfopen?view=vs-2017
疑问2文档链接:
https://docs.microsoft.com/zh-cn/windows/desktop/api/fileapi/nf-fileapi-arefileapisansi

疑问1:

这句话的意思是:fopen()使用ANSI代码页解释 第一个参数(也就是文件名字符串),但是可以用SetFileApisToOEM()函数将其更改为使用OEM解释文件名字符串 吗?

疑问2:
然后我跳到了AreFileApisANSI()函数文档处看了看:

这里说,如果文件I/O函数是使用ANSI代码页,返回非0值;如果文件I/O函数是使用OME代码页,返回0。
这里 关于文件I/O函数使用的代码页 不明白。是这样理解的:假如getc()函数获取了一个字节,并将其用ANSI编码解释,那就是 文件I/O函数使用的是ANSI代码页还是OS使用的是ANSI代码页如果是文件I/O函数的话,难不成还内置编码了吗?

疑问3:

关于fopen()支持UNICODE不太理解
我的理解是:如果不加上ccs标志编码模式,那么默认 文件I/O函数就是用ASCII来编解码,如果加上了ccs标志编码模式,那么就用UNICODE来编解码,且一次只能读取或写入偶数个字节(那就不能用getc()和putc()函数)。这里文件只能用文本模式打开。是这样 吗?


以上是关于fopen()函数和编解码的一些疑问,希望有人能给本小白解惑,谢谢!


...全文
354 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
独孤过 2018-12-21
  • 打赏
  • 举报
回复
独孤过 2018-12-21
  • 打赏
  • 举报
回复
对于疑问2:看一下维基百科的说明 https://zh.wikipedia.org/wiki/%E4%BB%A3%E7%A0%81%E9%A1%B5
独孤过 2018-12-21
  • 打赏
  • 举报
回复
先说疑问1吧:当使用单字节字符串时,fopen使用ANSI代码页解释文件名字符串,但是可以用Windows API SetFileApisToOEM函数将其更改为使用OEM解释文件名字符串。
sdsszk 2018-12-21
  • 打赏
  • 举报
回复
字符编码主要有两个钟形式utf8和GB2312

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧