- 主题:[求助]请教个win下fopen的路径中包含utf8编码的问题
我用的是win11, visual studio17,
如果在代码里面直接写 fopen("中文路径1/ab","r"),它能打开。
但我在 "中文路径1/ab" 里面写入一行比如 中文路径2/cd,那么我用fgets() 读入这行再 fopen打开就会报错。
想请教一下如何解决。
--
FROM 112.93.142.*
那取决于“中文路径2/cd”这个字符串在文件里是以什么编码存放的,
如果是ANSI/GBK的编码格式存放的,就没问题。因为fopen()打开文件时如果没指定编码,那么fgets()就用ansi编码读取。
如果是utf8、utf16的编码格式存放的,就有问题。
找个十六进制编辑器打开文件看看里面字符串编码后的hex字节就知道了
--
修改:z16166 FROM 111.199.144.*
FROM 111.199.144.*
多谢!它是以utf-8 编码存放的,所以不对。
网上找了半天,发现 MultiByteToWideChar 和 WideCharToMultiByte可以实现下面的转换:
ansi <-> unicode <-> utf-8。
总算解决了。
【 在 z16166 的大作中提到: 】
: 那取决于“中文路径2/cd”这个字符串在文件里是以什么编码存放的,
: 如果是ANSI/GBK的编码格式存放的,就没问题。因为fopen()打开文件时如果没指定编码,那么fgets()就用ansi编码读取。
: 如果是utf8、utf16的编码格式存放的,就有问题。
: ...................
--
FROM 122.193.118.*