C++ifstream 读取汉字乱码

hitweijinlong 2009-10-12 01:53:18
用ifstream读取汉字之后是乱码,ofstream写入text文件中ok,
我用MultiByteToWideChar转换之后还是乱码
...全文
904 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
only_lonely 2009-10-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chenyu2202863 的回复:]
UNICODE
用wifstream
[/Quote]
恩,也可以用 isTextUnicode 判断了再说
hitweijinlong 2009-10-13
  • 打赏
  • 举报
回复
读到的汉字是utf8的格式,占3个字节,所以乱码了,不过还是要谢谢大家!
sweetjian 2009-10-12
  • 打赏
  • 举报
回复
不太明白lz的意思,你想这样?

ofstream out("d:\\test.rtf");
ifstream in("d:\\test.txt");
char a;
while(in>>a){
out<<a;
}
chenyu2202863 2009-10-12
  • 打赏
  • 举报
回复
UNICODE
用wifstream
yndfcd 2009-10-12
  • 打赏
  • 举报
回复
字符在写入文件时,不会写入字符所用的编码规则的.

所以在读出来时,他应不知道文件里存的字符是什么编码.

如果文件也是你自己写的,只要保证读入和写出时用的一样的编码就可以正确显示了,没必要用MultiByteToWideChar.因为这个函数本身也是不准确的.
hitweijinlong 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kouwenlong 的回复:]
贴下代码看看。
[/Quote]
char xml_text[100000];
infile->get(xml_text,100000,'<');//读取汉字:(要把电脑设置调成最佳配置)
但是读取出来之后strlen(xml_text)是36内容是乱码,用ofstream写到文件中,用记事本打开编码OK。写字板乱码,
现在主要是将读取的内容写入到rtf文件中,写入之后是乱码
kouwenlong 2009-10-12
  • 打赏
  • 举报
回复
贴下代码看看。
G_Forever 2009-10-12
  • 打赏
  • 举报
回复
1个汉字占2个字节,你用的ifstream读取的ansi形式的。
前面加上2个字节, 我忘记了。 你查查。
hitweijinlong 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 taodm 的回复:]
代码?被读文件内容?
兄弟,你还是先google “提问的智慧”吧
[/Quote]
楼上的混分也不是这种方式吧!
taodm 2009-10-12
  • 打赏
  • 举报
回复
代码?被读文件内容?
兄弟,你还是先google “提问的智慧”吧

64,635

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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