有没有Unicode与MBCS之间转换的自实现函数?

Brierbird 2004-07-13 08:16:56
因为Windows提供的MultiByteToWideChar或WideCharToMultiByte虽然可用,但只能在Windows下用,想让程序也能在Linux上跑,因此,不敢用这两个函数.
请问,有没有其它函数能用?如果有标准C的函数更好了,或者是自实现的也可以.谢谢!
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Brierbird 2004-07-27
  • 打赏
  • 举报
回复
To changlele(梦幻水晶) : 我说的是想要Linux能实现的方案,而你给的方法虽然能转换,但实际上还是Windows中的方法,不是我想要的。
TO jink(毁人不倦): 就是它了!
谢谢各位的捧场,结贴。
jink 2004-07-13
  • 打赏
  • 举报
回复
wctomb
mbtowc
changlele 2004-07-13
  • 打赏
  • 举报
回复
上面写的是多语言转换得方法,不知道对楼主帮助大不大
changlele 2004-07-13
  • 打赏
  • 举报
回复
Windows提供接口进行转换

下面得代码就是

CString CCharSet::ChangeLanguage(DWORD Source, DWORD Target, CString string)
{

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


sohou 2004-07-13
  • 打赏
  • 举报
回复
不就是转成字节么,那你自己写就成啊

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧