Unicode字符集,读文件时乱码

chizhaolin 2010-02-03 05:58:25
前提:
字符集:Unicode

函数:
   void test()
{
FILE *fp;
wchar sBuf[256];

fp = tfopen_s(fp, TEXT("C:\test.dat "), TEXT("r"));
if (!fp)
{
/* ERROR */
}
if (_fgetts(sBuf, sizeof(sBuf), in_fp) != NULL)
{
……
}
……
}


文件C:\test.dat中的内容如下:
#文件头
大家好
……

结果读入sBuf中的内容全是乱码,不知道什么原因。
字符集是Unicode而且sBuf的类型是wchar,应该没有问题啊。
请高手指教一下。
...全文
99 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chizhaolin 2010-02-25
  • 打赏
  • 举报
回复
以上各位的方法都没能解决我的问题,不过还是谢谢各位的关注!
我用了setlocale这个函数后,解决了乱码问题!
希望对碰到类似问题的同学有所帮助!
用户 昵称 2010-02-03
  • 打赏
  • 举报
回复
要确定你的文件就是utf16格式的。
aozhi 2010-02-03
  • 打赏
  • 举报
回复
首先unicode有前导FFFE。其次你编译环境的内码不是unicode,再次你执行环境的内码不是unicode。
xylicon 2010-02-03
  • 打赏
  • 举报
回复
fseek(fp, 2, SEEK_SET); // 越过文件头 0xFEFF。
// 再执行下面这句
if (_fgetts(sBuf, sizeof(sBuf), in_fp) != NULL)
jackyjkchen 2010-02-03
  • 打赏
  • 举报
回复
我明白了,搞了半天你在文本文件里保存的是ANSI字符吧。

“大家好”这三个字的……

你试一下用char读,恐怕就没问题了
chizhaolin 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jackyjkchen 的回复:]
你说的乱码如何知道是乱码?如果说你简单的cout发现是乱码,那必然乱码,STL系的东西必须设定字符集才能正常显示。
[/Quote]

我单步跟踪的,发现读完第一行,除了#号正确的读了进来,其余的全是乱码
jackyjkchen 2010-02-03
  • 打赏
  • 举报
回复
你说的乱码如何知道是乱码?如果说你简单的cout发现是乱码,那必然乱码,STL系的东西必须设定字符集才能正常显示。

69,369

社区成员

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

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