Fish:
【XML菜鸟贴】如何利用 MSXML 提供的 IXMLDOMDocument 接口产生编码格式为 UTF-8 的 xml 文件?
[阅读: 2056] 2006-01-10 03:03:56
最近赶鸭子上架搞一点东西,基本上就是数据编码然后传输
传输方式是客户端根据数据表产生xml,送到服务器端,
服务器解析xml,再写入数据库
这里的 xml 文件是根据广东省某标准的格式写的,
不用写<?xml version="1.0" encoding="...."?>之类的 xml 头
客户端用的是 MSXML 里面的 IXMLDOM.... 接口,
服务端用的是开源的 xerces-c++ 2.6 版
现在的问题是服务器端解析 xml 中的汉字时出现了问题
服务器端默认采用的编码方式应该是 encoding="UTF-8"
关于汉字的部分,原来客户端产生 xml 元素的代码片断如下:
XMLDOC->createElement(CComBSTR(L"OperatorName"),&pElement);
pElement->put_text(WideString(array[i].OperatorName));
这里,全部是转成 WideString(即 unicode)再写入
昨晚在没2x和李鸡蛋的指导下才知道 unicode 和 UTF-8 不是一回事(惭愧),
并且得知 BCB 里面有 UTF8Encode 等 UTF-8 相关的函数
于是,尝试改成下面这样:
pElement->put_text( UTF8Encode( WideString(array[i].OperatorName) ) );
但是这样编译通不过,因为 MS 的 COM 对象里面,实际上将参数定义成 wchar_t,
也就是 16 位的 Unicode。
强制转换类型也是不行的,结果还是普通中文
pElement->put_text( WideString( UTF8Encode( array[i].OperatorName ) ) );
我该怎么处理? 俺是 xml 菜鸟,请各位多多指教
大家都是出来卖的,何苦自己人为难自己人
那些活好的,或者活新的,或者花样多的,
或者老板拉皮条功夫好能拉到肯多花钱的客的,
拜托不要老是打击年老色衰的同行了
老鱼记事 老鱼侃棋 老鱼围脖