怎么把中文字符转成unicode后显示在窗口上?
解决方案 »
- CWnd::SetFont 和 CDC::SelectObject(font)
- 关于在VC中添加数据源的问题
- mfc中做的3D动画,运行时cpu总是100%,如何解决?
- 怎样将CDatabase和CRecordSet联系起来?????(CRecordSet不用ClassWazerd生成)
- 98下如何读写物理内存?
- 应该是一个菜问题
- 用VC编写Automation Excel时的问题(100分)
- vc中如何读写EXCEL2007的CSV文件,希望高人指点
- 关于查找记录集的问题
- CSocket的小问题
- CMFCToolBar 如何改变按钮上的位图
- VC2010 MFC 改变窗口默认大小 跳出的窗口会闪烁,怎么解决
int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
strSrc = new WCHAR[i+1];
MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);
USE_CONVERSION
A2W
size_t n = 0; char* str = "中文ING";
mbstowcs_s(&n,buffer,strlen(str),str,256);也没问题
你试的时候是在纯英语的系统下吗?我试下来在纯英语系统下是乱码,但是把下面的选项改成中文就行了不是说unicode的工程(代码都用宽字节字符和函数)可以在纯英文的系统环境下正确显示任何语言吗? 如果装好中文包的英文系统,切换到中文选项,utf-8的中文文件可以正确显示,不需要做任何转换.
http://zhidao.baidu.com/question/29752200.html我的问题就是这样的,我的程序是ANSI的,不符合Unicode标准,所以在英文的系统下任、仍然不能正确显示,要靠设置
“Select a language to match the language version of the non-Unicode programs you want to use”才能显示,有没有可能将工程的一个窗口修改一下以符合Unicode标准?
{
int cchOutput = 0; if( NULL == pszInput || NULL == pptszOUtput )
{
return( E_INVALIDARG );
}#ifdef UNICODE
cchOutput = MultiByteToWideChar( CP_ACP, 0, pszInput, -1, NULL, 0 );
if( 0 == cchOutput )
{
return( HRESULT_FROM_WIN32( GetLastError() ) );
}
#else
cchOutput = strlen(pszInput)+1;
#endif *pptszOUtput = new TCHAR[cchOutput];
if( NULL == *pptszOUtput)
{
return( E_OUTOFMEMORY );
}
#ifdef UNICODE
if( 0 == MultiByteToWideChar( CP_ACP, 0, pszInput, -1, *pptszOUtput, cchOutput ) )
{
if(*pptszOUtput )
{
delete *pptszOUtput;
*pptszOUtput = NULL;
} return( HRESULT_FROM_WIN32( GetLastError() ) );
}
#else
_tcscpy_s(*pptszOUtput,cchOutput,pszInput);
#endif return S_OK;
}
上面这个函数可以讲char转化为多字节用法如:
char *szName = "张三";
TCHAR* tszName = NULL;
ConvertCharToTChar(szName, &tszName);
这样就能赚化为宽字节了。最后注意
要 delete tszName;
memset( wptrData1, 0, (strlen(ptrData1)+1)*sizeof(wchar_t) );
RC = (*CONVERTFILE_addr)( UTF82ANSI, ptrData1, wptrData1, strlen(ptrData1)+1 ) ;
SetWindowTextW( hwndAnalyzeEdit1, wptrData1 ) ;
我把字符转成宽字节的了,但是显示出来的中文还是问号,要靠设置
“Select a language to match the language version of the non-Unicode programs you want to use”才能正确显示。是不是要调用setlocale( LC_ALL, "CHS" );?但我试下来没用