关于utf数据格式的字符串转化成Ansi字符串的问题。MSDN没仔细看,网上找找又是一头雾水。也在csdn中也找了很久,就是没有明显的答案,有分析编码方式的,有java代码的,有说到用这个函数的。
其实很简单,就像一层纸,没破就是不太懂。下面是代码:
void Utf8ToAnsi( CString str )
{
LPWSTR lpszW = new WCHAR[1024]; LPTSTR lpStr = str.GetBuffer( str.GetLength() );
int nLen = MultiByteToWideChar(CP_ACP, 0,lpStr, -1, NULL, NULL);
MultiByteToWideChar(CP_UTF8, 0, lpStr, -1, lpszW, nLen); WideCharToMultiByte(CP_ACP, 0, lpszW, nLen, str2.GetBuffer(1024), 1024, NULL, NULL );
delete[] lpszW;
str.ReleaseBuffer();
}
其实很简单,就像一层纸,没破就是不太懂。下面是代码:
void Utf8ToAnsi( CString str )
{
LPWSTR lpszW = new WCHAR[1024]; LPTSTR lpStr = str.GetBuffer( str.GetLength() );
int nLen = MultiByteToWideChar(CP_ACP, 0,lpStr, -1, NULL, NULL);
MultiByteToWideChar(CP_UTF8, 0, lpStr, -1, lpszW, nLen); WideCharToMultiByte(CP_ACP, 0, lpszW, nLen, str2.GetBuffer(1024), 1024, NULL, NULL );
delete[] lpszW;
str.ReleaseBuffer();
}
解决方案 »
- 是否可以动态修改Edit文本编辑框背景颜色?
- 针对动态的显示曲线Cmulticolorplotbtn类控件在显示数据时遇到的问题
- 串口问题
- CListBox(CTransparentListBox)对象,行间距可以调吗?
- 我的置顶窗口会被其他程序的置顶窗口覆盖,怎么办呢各位
- 系统托盘怎样弹出气球提示?
- 关于一个win32 console application工程的简单问题
- 急急急:使用install shield做过数据库应用软件安装程序的高手,请帮忙
- ******高手请进!本人要用vc作dll,调用oracle的存储过程(有输入和返回值),但是访问方式有odbc,ado,dao等,想问一下他们有什么区别?
- 为什么对话框类和应用程序类(app)中不可以包含CButton* abcd;
- 如何用ADO从另外数据库中拷贝一个表?
- 创建文件失败!
{
LPWSTR lpsz = NULL;
CString strPart;
CString strItem, str;
int nLen;
LPTSTR lpStr = NULL; lpsz = new unsigned short[1024];
while( !strData.IsEmpty() )
{
strPart = strData.Left( nBuf );
strData.Delete( 0, strPart.GetLength() ); lpStr = strPart.GetBuffer( strPart.GetLength() );
nLen = MultiByteToWideChar( CP_ACP, 0, lpStr, -1, NULL, NULL );
memset( lpsz, 0, nBuf*2 );
MultiByteToWideChar( CP_UTF8, 0, lpStr, -1, lpsz, nLen ); lpStr = strItem.GetBuffer( nBuf );
WideCharToMultiByte(CP_ACP, 0, lpsz, nLen, lpStr, nBuf, NULL, NULL );
strItem.ReleaseBuffer();
str += strItem;
}
//delete[] lpsz ????? strData = str;
}