多种编码格式文件的保存

1、背景 XML(Extensible Markup Language)是一种可以用来创建自定义标记的标记语言,我们经常使用它来进行数据传递。Microsoft提供了XML内核服务()MSXML使得我们可以加载或创建DOM(Document Object Model)文档。在实际使用过程中,我们发现XML中一些特殊字符会自动转换为一些特殊编码。本文只讨论各种不同编码格式xml文本的生成,对于某种格式编码的特殊字符或超过编码范围的字符留待后面作进一步讨论。 2、各种编码格式文件生成的解决方案 1)ANSI码文件 方案1: HANDLE hFile = CreateFile(“C://XXX.xml”, GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL); if ( hFile != INVALID_HANDLE_VALUE ) { DWORD dwNumWritten = 0; BOOL bRes = WriteFile( hFile, strxml.c_str(), strxml.size(), &dwNumWritten, NULL); CloseHandle(hFile); } 方案2: FILE *pf = fopen(“C://sms.xml”, “wb+”); if (pf) { Size_t szLen = fwrite(pszText, 1, nLen,pf); fclose(pf); } 2)Unicode码文件 方案1: HANDLE hFile = CreateFile(L“C://XXX.xml”, GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL); if ( hFile != INVALID_HANDLE_VALUE ) { DWORD dwNumWritten = 0; BOOL bRes = WriteFile( hFile, wpszText, nLen, &dwNumWritten, NULL); CloseHandle(hFile); } 方案2: FILE *pf =_w fopen(L“C://sms.xml”, “wb+,ccs=unicode”); if (pf) { Size_t szLen = fwrite(pszText, 1, nLen,pf); fclose(pf); } 3)Utf-8文件 FILE *pf = _wfopen( L"c://sms.xml",L"wb+,ccs=UTF-8"); if ( pf ) { size_t szLen = fwrite(pUtf8Text, 1, nLen, pf); fclose(pf); } 3、测试 本代码在VC6及VS2005.NET下测试通过。 4、待解决问题 本文只是讨论文件的生成,对于生成的文件,如果含有超出编码范围的特殊字符,xml仍然是非法XML文件,比如,对于utf-8的xml文件,如果内含十六进制值0XFF,0XFE的内存,就是一个非法XML文件。怎样让XML文件有效,是我们进一步需要弄清楚的问题。 5、参考 略。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值