求助!C语言汉字转UTF8的问题

Email144 2008-11-30 03:29:21
char* TOUTF8(const char *c,char *c1)
{
int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, (LPCSTR)c, strlen(c), NULL, 0);//ASCII-UNICCODE
//转换
::MultiByteToWideChar(CP_ACP, NULL, (LPCSTR)c, strlen(c), (LPWSTR)c1, wcsLen);
c1[wcsLen] = '\0';
char s1[20];
sprintf(s1,"%s",c1);
char s[20];
// sprintf(s,"%s",c1);
int wcsLen1 = ::WideCharToMultiByte(CP_UTF8, NULL, (LPCWSTR)s1, wcslen((const wchar_t *)s1), NULL, 0, NULL, NULL);//UNICCODE-UTF8
//转换
::WideCharToMultiByte(CP_UTF8, NULL, (LPCWSTR)s1, wcslen((const wchar_t *)c), s, wcsLen1, NULL, NULL);
//最后加上'\0'
s[wcsLen] = '\0';
return s;
}
void mian()
{
char s1="你好!"
char s2[20];
printf("%s",TOUTF8(s1,s2));
}


我的想法是先调用MultiByteToWideChar把汉字转换成UNNICODE格式,然后在用WideCharToMultiByte转换成UTF8,这样就能输出中文了
但是并没有实现,请各位高手看看是什么回事》?谢谢了
...全文
548 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
luozhi9 2009-03-10
  • 打赏
  • 举报
回复

if ( SystemDirectory(abuffer) == 0 )
return 1;
snprintf( bufTemp, sizeof(bufTemp), "%s\\LoginCtrl.db", abuffer ); //login

memset(abuffer, 0, sizeof(abuffer) );
ilen = WideCharToMultiByte( CP_UTF8, 0, bufTemp, -1, 0, 0, NULL, NULL);

pBuf = (char *)malloc( ilen );
WideCharToMultiByte( CP_UTF8, 0, bufTemp, -1, pBuf, ilen, NULL, NULL)


这样好像不行呀。。。。转换成UTF8
nicholas100 2008-12-01
  • 打赏
  • 举报
回复
学习
hhyttppd 2008-12-01
  • 打赏
  • 举报
回复
UNNICODE?gb2312?
unicode具体编码方法有好几种,先弄清你的汉字原码是什么,如果本来就是用utf8编码的,就不用转换了
windows下一般都是gbk或gb2312,所以一般直接从gb2312到utf8就行了,我给一段vc下的代码:

//unicode(GBK) 编码到 utf8
//pDstData == NULL, 测试长度
static int UnicodeToUTF8(const TCHAR* szUnicode, uint16 uLen, char* pDstData, uint16* uDstLen)
{
int nLen = WideCharToMultiByte(CP_UTF8, 0, szUnicode, uLen, NULL, 0, NULL, NULL);
if(pDstData == NULL || uDstLen == 0)
{
//计算需要的长度
return nLen;
}

return *uDstLen = ::WideCharToMultiByte(CP_UTF8, 0, szUnicode, uLen, pDstData, nLen, NULL, NULL);
}
pingzi_1119 2008-12-01
  • 打赏
  • 举报
回复
up

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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