解决 TinyXML中文乱码的问题
2015-07-15 16:31
113 查看
http://blog.csdn.net/gengxt2003/article/details/5973501
在使用TinyXML 时,发现中文支持不好,
找来找去,发现下面文章对我有很大帮助,按照其中的函数进行转换后,可以处理中文我是在SetAttribute() 函数之前使用的
SetAttribute(const char* name,const char * _value)
然后
string strTemp;
strTemp = nodeRoot->Attribute("node");
attrnode = const_cast<char*>(strTemp.c_str());
UTF8ToGBK(attrnode);
在使用TinyXML 时,发现中文支持不好,
找来找去,发现下面文章对我有很大帮助,按照其中的函数进行转换后,可以处理中文我是在SetAttribute() 函数之前使用的
SetAttribute(const char* name,const char * _value)
然后
string strTemp;
strTemp = nodeRoot->Attribute("node");
attrnode = const_cast<char*>(strTemp.c_str());
UTF8ToGBK(attrnode);
void UTF8ToGBK( char *&szOut ) { unsigned short *wszGBK; char *szGBK; //长度 int len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)szOut, -1, NULL, 0); wszGBK = new unsigned short[len+1]; memset(wszGBK, 0, len * 2 + 2); MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)szOut, -1, (LPWSTR)wszGBK, len); //长度 len = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)wszGBK, -1, NULL, 0, NULL, NULL); szGBK = new char[len+1]; memset(szGBK, 0, len + 1); WideCharToMultiByte(CP_ACP, 0, (LPWSTR)wszGBK, -1, szGBK, len, NULL, NULL); //szOut = szGBK; //这样得到的szOut不正确,因为此句意义是将szGBK的首地址赋给szOut,当delete []szGBK执行后szGBK的内 //存空间将被释放,此时将得不到szOut的内容 memset(szOut,0,strlen(szGBK)+1); //改将szGBK的内容赋给szOut ,这样即使szGBK被释放也能得到正确的值 memcpy(szOut,szGBK,strlen(szGBK)); delete []szGBK; delete []wszGBK; } void GBKToUTF8(char* &szOut) { char* strGBK = szOut; int len=MultiByteToWideChar(CP_ACP, 0, (LPCSTR)strGBK, -1, NULL,0); unsigned short * wszUtf8 = new unsigned short[len+1]; memset(wszUtf8, 0, len * 2 + 2); MultiByteToWideChar(CP_ACP, 0, (LPCSTR)strGBK, -1, (LPWSTR)wszUtf8, len); len = WideCharToMultiByte(CP_UTF8, 0, (LPWSTR)wszUtf8, -1, NULL, 0, NULL, NULL); char *szUtf8=new char[len + 1]; memset(szUtf8, 0, len + 1); WideCharToMultiByte (CP_UTF8, 0, (LPWSTR)wszUtf8, -1, szUtf8, len, NULL,NULL); //szOut = szUtf8; memset(szOut,0,strlen(szUtf8)+1); memcpy(szOut,szUtf8,strlen(szUtf8)); delete[] szUtf8; delete[] wszUtf8; }
相关文章推荐
- Apache Jmeter压力测试神器-快速入门
- 嵌入Linux开发环境搭建--secruceCRT配置
- HDU 4640 Island and study-sister(状态压缩DP+路径压缩)经典 旅行商问题
- 高性能网站性能优化与系统架构(ZT)
- sql注入原理
- [leedcode 82] Remove Duplicates from Sorted List II
- Swift基础之闭包
- ffmpeg转mp4为ts 命令行实现
- 汉诺塔II(hdu1207)经典递推
- asdf
- 一道关于sizeof()的困惑的笔试题
- 马云皱着眉头说
- Linux2.6 内核中结构体初始化(转载)
- 邮件发送测试页。首页
- 续航1年,小米+李宁的智能运动鞋抢先看
- 【排错】Failed to replace a bad datanode on the existing pipeline due to no more good ...
- 黑马程序员--OC笔记
- Linux-2.6.20的cs8900驱动分析(三)
- YT05-动态归划求解课堂题目-1004—最少拦截系统-(6.21日-烟台大学ACM预备队解题报告)
- html中给地址栏添加icon图标