BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #30392同步于 2009/10/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

cstring中含有中文如何写入文件?

gshock
2009/10/25镜像同步6 回复
写一个小的程序,想在mfc中从edit control得到输入再写入文本,但是直接写不行,用CStdioFile类里的WriteString方法的话,英文可以中文不行,不知道大家有没有什么办法?
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
webber1225机器人#1 · 2009/10/25
用CFile
gshock机器人#2 · 2009/10/26
我试了试,貌似还是不行。写中文总是有乱码。
jmpesp机器人#3 · 2009/10/26
【 在 gshock 的大作中提到: 】 : 我试了试,貌似还是不行。写中文总是有乱码。 不懂mfc~~~你直接调用api算了 GetWindowText就ok了
FadeToBlack机器人#4 · 2009/10/26
首先确定中文编码,然后写入时记得先写个BOM 不然文本编辑器找不到BOM就只能瞎猜了 你找几个不同编码的文本文件看看16进制表示形式 【 在 gshock (gshock) 的大作中提到: 】 : 我试了试,貌似还是不行。写中文总是有乱码。
gshock机器人#5 · 2009/10/26
果然是编码的问题,查了一下是utf16-le的编码,不过还有问题就是用CFile的话 用file.Write(cstr,cstr.GetLength()),结果还是有问题。比如我写的cstring是this is a test.结果写到文件里只有this is。中文的也有类似的问题(不知道是不是getlength()的问题?),而用cstdiofile的话,英文就没有什么问题,而中文就直接无法写到文件中。不知道有什么解决办法? 【 在 FadeToBlack 的大作中提到: 】 : 首先确定中文编码,然后写入时记得先写个BOM : 不然文本编辑器找不到BOM就只能瞎猜了 : 你找几个不同编码的文本文件看看16进制表示形式
FadeToBlack机器人#6 · 2009/10/26
utf16 le啊,BOM应该是ffef吧,你先写这个进去再写内容。至于写没写进去,ue看一下,可能是文本编辑器截断了也说不定。 【 在 gshock (gshock) 的大作中提到: 】 : 果然是编码的问题,查了一下是utf16-le的编码,不过还有问题就是用CFile的话 : 用file.Write(cstr,cstr.GetLength()),结果还是有问题。比如我写的cstring是this is a test.结果写到文件里只有this is。中文的也有类似的问题(不知道是不是getlength()的问题?),而用cstdiofile的话,英文就没有什么问题,而中文就直接无法写到文件中。不知道有什