VC中生成XML文件时汉字问题,100分求助.

diwaa 2010-08-22 10:39:15
vFieldValue=dw_pR->GetCollect("B05");
strFieldValue=(char *)_bstr_t(vFieldValue);
dwmc=strFieldValue;
fid.Write(hdd1,strlen(hdd1));
fid.Write(dwmc,strlen(dwmc));
fid.Write(hdd3,strlen(hdd3));
在VC中,取oracle数据库中记录内容,其中单位名称为B05字段,取出后保存在dwmc中,用AfxMessageBox(dwmc)可以显示

正常,但当 fid.Write(dwmc,strlen(dwmc));后,生成到文件后是乱码.

请教高手如何解决.
...全文
233 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zydzmapx 2010-09-01
  • 打赏
  • 举报
回复
我也关注此问题,最近好像没人关注,帮楼主顶
liuhua524 2010-08-24
  • 打赏
  • 举报
回复
char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) );
setlocale( LC_CTYPE, "chs" );
... 写文件
setlocale( LC_CTYPE, old_locale ); //还原区域设定
free( old_locale );
Abcix 2010-08-24
  • 打赏
  • 举报
回复
编码问题,你可以把xml强制要求成一种编码,如utf-8格式,就按照utf-8格式读,就不会有问题了。
hztj2005 2010-08-23
  • 打赏
  • 举报
回复
学习下
skyxie 2010-08-23
  • 打赏
  • 举报
回复
vs2008中默认工程属性,写中文字符写进去,需要setlocale


//
// 微软太猥琐,在工程是默认设置(Unicode编码)时, 如果不setlocale,中文字符就写不进文件....
//
char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) );
setlocale( LC_CTYPE, "chs" );
... 写文件
setlocale( LC_CTYPE, old_locale ); //还原区域设定
free( old_locale );
StarsunYzL 2010-08-23
  • 打赏
  • 举报
回复
把和fid、dwmc相关的代码都帖出来看看,估计是字符串编码的问题。
dickbarry 2010-08-23
  • 打赏
  • 举报
回复
莫非又是Unicode的问题?
teleinfor 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xianglitian 的回复:]
用CMarkup试试
[/Quote]
这个东西现在好像收费了,是么?我不敢再用,项目用到一定程度居然他变成商业化的软件模块了。。。
向立天 2010-08-23
  • 打赏
  • 举报
回复
用CMarkup试试
tubo_true 2010-08-23
  • 打赏
  • 举报
回复
字符问题

用XML DOM 写xml不就行了

cfile写要处理unicode,char转换
向立天 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 muzizongheng 的回复:]
引用 11 楼 xianglitian 的回复:
引用 7 楼 teleinfor 的回复:
引用 6 楼 xianglitian 的回复:
用CMarkup试试

这个东西现在好像收费了,是么?我不敢再用,项目用到一定程度居然他变成商业化的软件模块了。。。

这个还真不清楚
我现在还在用


这个真收费。 我07年就看到它的license里说收费了。 个人免费, 商业收费。……
[/Quote]
看来以后不能再用了
不过他怎么能知道我的软件里用没用CMarkup呢
muzizongheng 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xianglitian 的回复:]
引用 7 楼 teleinfor 的回复:
引用 6 楼 xianglitian 的回复:
用CMarkup试试

这个东西现在好像收费了,是么?我不敢再用,项目用到一定程度居然他变成商业化的软件模块了。。。

这个还真不清楚
我现在还在用
[/Quote]

这个真收费。 我07年就看到它的license里说收费了。 个人免费, 商业收费。
StarsunYzL 2010-08-23
  • 打赏
  • 举报
回复
试试:

//#include <locale.h>
setlocale(LC_ALL, "chs");
fid.Write(CA2W(inss), strlen(inss) * sizeof(wchar_t));
向立天 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 teleinfor 的回复:]
引用 6 楼 xianglitian 的回复:
用CMarkup试试

这个东西现在好像收费了,是么?我不敢再用,项目用到一定程度居然他变成商业化的软件模块了。。。
[/Quote]
这个还真不清楚
我现在还在用
diwaa 2010-08-23
  • 打赏
  • 举报
回复
有一个源文件tcb.xml,是xml格式的,里面有汉字,数字和字母;

首先打开
if(!fidin.Open("d://sjcx//tcb.xml",CFile::modeRead))
{
AfxMessageBox("不能打开读入文件,请检查是否已经打开");
return;
}


VC程序从源文件in.txt内读数据,一行一行读,
fidin.ReadString(inss);//inss是CString

如果遇到标记则替换:
if(inss=="dwcxrq")
{
inss.Format("%s",dwrq);
}
替换内容为汉字:dwrq为汉字.
然后写到另一个文件内:
fid.Write(inss,strlen(inss));
问题出来了,
生成的文件中,源文件内的汉字显示正常,但是替换的汉字则是乱码,用AfxMessageBox(dwrq)显示一
下显示的也正常.
请高手指点,谢谢.
muzizongheng 2010-08-23
  • 打赏
  • 举报
回复
第一你的肯定是unicode的问题

第二CMarkup商用有问题的, 用tinyxml替换。

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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