用东软API接收来的中文短信显示乱码,东软技术支持说是短信内容(char short_msg[161])是Unicode编码格式的,需要转换过来。小弟对此一无所知,看了MSDN,上面说要用WideChartoMultiByte函数来转换,可是我试了好像不行的说“测试”全部变成了“mK嬚”,请大家指点一二,不尽感激
解决方案 »
- txt文件 增删改查操作 在线等
- vc如何将用字符串存储的base64code再存储为jpg文件
- 初学者:界面移动控件的问题,谢谢
- for(int m = 0; m < 4; m++){;}什么意思啊?
- 如何知道當前DLL函數的前一調用者的文件名?
- 加个弹出窗口就出错,这是为什么?真想不能他们与数据操作有什么关系!(ActiveX中使用ADO)
- 有谁用过FlexCell表格控件吗?哪里有VC的实例代码可下载?
- 急问~~~如何得到文本输入框中的数据并且进行类型转换
- 关于图形的问题!!大家一起来思考一下,分可多给
- VC控制台程序如何将字符串转化为BSTR类型的参数传递给COM组件?
- 有个作业没做完请进,wuwu
- 一个通过ADO访问数据库时的问题!(在线等待)
{
UINT nStrULength=WideCharToMultiByte(
CP_ACP,0,strU,-1,NULL,NULL,NULL,NULL);
LPSTR lpStr;
lpStr=(char*)malloc(nStrULength);
WideCharToMultiByte(CP_ACP,0,strU,-1,lpStr,nStrULength,NULL,NULL);
return lpStr;
}
/*
unsigned short* OleDBCom::CharpToUnsignedShort(LPSTR str)
{
OLECHAR strU[255];
int nStatus=MultiByteToWideChar(CP_ACP,0,str,-1,strU,255);
return strU;
}
*/
楼上的JennyVenus老兄,能说详细点吗?
{
wchar_t UnicodeWCH[100];
int MultiLength = 0;
int WideLength = 0;
unsigned char SMLength = 0;
while(MultiLength < UnicodeLength)
{
UnicodeWCH[WideLength++] = ((unsigned char )UnicodeText[MultiLength] << 8)
+ (unsigned char)UnicodeText[MultiLength+1];
MultiLength += 2;
}
UnicodeWCH[WideLength] = 0;
SMLength = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)UnicodeWCH, WideLength,
(LPSTR)ASCText, 161, NULL, NULL); return SMLength;
}
你的代码很好,我先用着,改天有时间再消化,先道谢,给分。呵呵:)