MultiByteToWideChar 求助!!!!!!!!!!!

flyingjm 2006-11-08 02:24:47
MultiByteToWideChar转换为unicode
1。第一个参数 UINT CodePage, // code page
Specifies the code page to be used to perform the conversion
是什么意思呢,看了msdn也不太明白
比如:
MultiByteToWideChar(CP_UTF8, //这个参数是指要转换成的编码,还是传入的参数的编码,或是什么
0,
toTrans,
len,
fchar,
len * 2+2
);
用的机器是日文系统。在VC中调试时,发现toTrans(被转换的串)是日文时,用MultiByteToWideChar计算所需的内存时,返回值有时候不正确,这样调用的MultiByteToWideChar(CP_UTF8, 0, toTrans, len, NULL, 0 );
...全文
310 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chzhk007 2006-11-10
  • 打赏
  • 举报
回复
你这两问题我就不知道了,没研究过UTF-8是什么格式的.
也不知道VC是否支持UTF-8.
flyingjm 2006-11-08
  • 打赏
  • 举报
回复
明白点了。还有两个问题:
1,要在UTF-8和MBCS之间转化的话,是不是先将UTF-8转化为Unicode,然后再将Unicode转换为MBCS?

2.在VC的工程中怎么使一个串是UTF-8呢,像定义一个Unicode的串一样,比如可以在串的前面加L,说明是Unicode的字符串比如char p* = L“hello”。
chzhk007 2006-11-08
  • 打赏
  • 举报
回复

Unicode码就是一种能表示全世界所有国家语言的字符编码.就是wide char格式的,两个字节表示一个字符.
而每个国家都有自己的字符编码,就是MultiByte格式的,多字节嘛.
MultiByteToWideChar的意思是把某种多字节的字符编码转换成unicode码.
这个函数没什么难以理解的,主要是codepage参数要写对.
codepage 932时说明要把日文编码转换成Unicode,
codepage 936时说明要把中文编码转换成Unicode.

还有要注意,转换成unicode码后,凡是涉及到字符串的函数都要用它的unicode版本,可以在编译选项里设定,也可以直接选用带W的函数:pDC->TextOutW(....);

microyzy 2006-11-08
  • 打赏
  • 举报
回复
CodePage是指toTrans的编码,设置不正确,返回的值当然不对,日文的codepage好像是932
akxu2006 2006-11-08
  • 打赏
  • 举报
回复
WCHAR pwc[50];
wcscpy(pwc, L"你好");
int i = WideCharToMultiByte(CP_ACP, 0, pwc, -1, NULL, 0, NULL, NULL);
CHAR * Message_Content = new CHAR[i];
memset(Message_Content, 0, i);
WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, pwc, -1, Message_Content,i, NULL, NULL);
MessageBox(Message_Content);
delete []Message_Content;

16,467

社区成员

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

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

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