我先用将其转换为宽字符,然后WideCharToMultiByte(1252,....)发现中文转换为?号
解决方案 »
- 关于读取EXCEL数据问题
- 16进制运算问题
- recv()想一个一个byte来接收数据,有点问题想请教
- 为什么在线程中用invalidate没有用?
- 调用自定义的静态库时,是否必须包含头文件?如果不包含相应的头文件能否实现调用?
- 在线等待,有关dll的问题
- ******运行时怎样改变“按钮”的风格,如:使其变为不可用状态(即颜色为灰)**********
- 想学习写个外挂,求大神指导
- 我在程序中想加入一个继承自COleDataSource的新类,用WINZARD,可是在可选择的父类中没有COleDataSource,如何解决?(内空)
- mfc 中通过GetDlgItem获取ComboBxo控件id然后将其禁用enablewindow(false)
- 千万不要认为这个问题很简单,虽然只是关于窗口的显示的问题(ShowWindow(SW_SHOW))
- 请教:这样是不是内存泄漏了。。。??
const char* wc2ISO8859_1(const WCHAR*wc,string&s8859)
{
//iso8859单个汉字编码最多为8个字节
int iL=wcslen(wc);
char ch[8]="&#";
int nC=0;
char*szBuf=new char[iL*8+1];
char*szRst=szBuf;
// 注意假定当前宽字符使用utf16le编码
const WCHAR*p=wc;
while(*p!=0)
{
if(*p<256)
{// 英文字符
*szRst=*p;
szRst++;
}
else
{// 中文字符
nC=strlen(itoa(*p,ch+2,10)); // 中文编码长度
ch[2+nC]=';';
memcpy(szRst,ch,3+nC); // 拷贝中文编码
szRst+=3+nC;
}
p++;
}
*szRst=0;
s8859=szBuf;
delete [] szBuf;
return s8859.c_str();
}
我不知道iso8859-1是什么编码~~
你可以在MSDN上去找你需要的codepage