因为Windows提供的MultiByteToWideChar或WideCharToMultiByte虽然可用,但只能在Windows下用,想让程序也能在Linux上跑,因此,不敢用这两个函数.
请问,有没有其它函数能用?如果有标准C的函数更好了,或者是自实现的也可以.谢谢!
请问,有没有其它函数能用?如果有标准C的函数更好了,或者是自实现的也可以.谢谢!
解决方案 »
- 急问关于VC2008程序发布到WIN7 64位机的问题~~~
- 求 流的特征提取的程序?
- 状态栏重绘后,Invalidate()刷新状态栏,时不时状态栏出现闪烁现象,怎样去掉闪烁现象呢?高手进啊
- windows RAW socket疑问
- datagrid只能设置表格的背景色和前景色,想改变边框的颜色怎么办?
- 菜鸟提问(很多菜问题,莫见笑)
- 告诉大家一个好消息:微软居然为vss6.0作了sp6的补丁,大家可以去下载!
- 谁知道windows是怎样将鼠标点击消息转变为WM_COMMAND消息的?
- 请介绍几本讲算法的好书
- 创建CListView?
- 用CFileDialog save as一个文件时,如果文件以存在,如何才能弹出一个对话框提示是否覆盖已存在的文件
- 怎样让一个ListCtrl不能更改选择?
{
UINT one=0;
UINT two=0;
DWORD pdwMode=0;
UCHAR* m_setstr;
UCHAR* m_getstr;
HRESULT hr;
CString m_after = "";
IMultiLanguage *pMultiLanguage;
m_setstr = NULL;
m_getstr = NULL;
CoInitialize(NULL);
hr=CoCreateInstance(CLSID_CMultiLanguage ,
NULL,CLSCTX_ALL,IID_IMultiLanguage ,
(void**)&pMultiLanguage);
if( FAILED(hr))
{
return "";
}
one =string.GetLength();
m_setstr =(UCHAR*)string.GetBuffer( string.GetLength()); hr=pMultiLanguage->ConvertString(&pdwMode,Source,
Target,(UCHAR*)m_setstr,
&one,NULL,&two);
if( FAILED(hr))
{
goto error_data;
}
m_getstr=(UCHAR*)malloc( two + 1 );
memset(m_getstr, '\0', two + 1 ); hr=pMultiLanguage->ConvertString(&pdwMode,Source,
Target,(UCHAR*)m_setstr,
&one,m_getstr,&two);
if( FAILED(hr))
{
goto error_data;
}
m_after=m_getstr;
free( m_getstr );error_data:
string.ReleaseBuffer();
pMultiLanguage->Release();
CoUninitialize();
return m_after;
}
调用时候
UpdateData(TRUE);
m_strDestLanguage = m_CharSet.ChangeLanguage(10008,65001,m_strSourceLanguage);
m_strDestLanguage = m_CharSet.ChangeLanguage(65001,932,m_strDestLanguage);
UpdateData(FALSE);
65001为UNicode
10008为GB2312
932为Shift-JIS
TO jink(毁人不倦): 就是它了!
谢谢各位的捧场,结贴。