怎么才能把字符串转换成utf8码? 急哦!!!!!!!!!!!!!!!!!! 怎么才能把字符串转换成utf8码? 急哦!!!!!!!!!!!!!!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MultiByteToWideChar (CP_ACP, ...); // ANSI字符串转化成Unicode字符串WideCharToMultiByte (CP_UTF8, ...); // Unicode字符串转化成Utf8字符串 难道我们在屏幕上输出的文字就是ANSI码吗?也就是说我们需要进行2次变换? 这里面包含了两个方向的转换,你看一下吧#include "Windows.h" int main(void) { char str [ 256 ] = "唐志国" ; //一段UTF-8编码 WCHAR* strA; int i= MultiByteToWideChar ( CP_ACP , 0 ,(char*) str ,-1 ,NULL,0); strA = new WCHAR[i]; MultiByteToWideChar ( CP_ACP , 0 ,( char * ) str, -1, strA , i); i= WideCharToMultiByte(CP_UTF8,0,strA,-1,NULL,0,NULL,NULL); char *strB=new char[i]; WideCharToMultiByte (CP_UTF8,0,strA,-1,strB,i,NULL,NULL); //strB即为所求 delete []strA; i= MultiByteToWideChar ( CP_UTF8 , 0 ,(char*) strB ,-1 ,NULL,0); strA = new WCHAR[i]; MultiByteToWideChar ( CP_UTF8 , 0 ,( char * ) strB, -1, strA , i); delete []strB; i= WideCharToMultiByte(CP_ACP,0,strA,-1,NULL,0,NULL,NULL); strB=new char[i]; WideCharToMultiByte (CP_ACP,0,strA,-1,strB,i,NULL,NULL); //strB即为所求 delete []strA; delete []strB; return 0; } windows下面的unicode使用的就是utf16 bluebohe(薄荷) (MVP):在你的代码中, //strB即为所求 之前 是把utf8转换成为什么每次都要有2部转换呀? 在 //strB即为所求 之后是不是就是吧 字符串转换成utf8先把 字符串转换成unicode码 用MultiByteToWideChar 为什么里面的参数是CP_UTF8 xstring(麻雀) 不是说应该是CP_ACP?? xstring(麻雀)那段代码难道是 先把字符串 转换成 utf8 (在//strB即为所求 之前)然后再转换回来 是吗? xstring(麻雀) 谢谢啦 让我先试试 SDK 子窗口 父窗口 消息 列表控件List Control更新数据后,很久才响应,请问怎么解决? MFC中如何关闭一个窗体 opengl中3D图形的选择、拾取、拖动、旋转、缩放 如何编译一个.cpp源代码 VC 6 中如何用到GDI+ ? 文件传送的问题 完成端口在用WSASend发送数据的时候,到底是已经发送完了还是只进入完成端口线程操作? 如何显示一个圆形的按钮,多谢:)最好有源代码 VC++6.0连接的问题?? 用CSocket做了个Win32 Console Application的服务器端,无法Creat! CVS怎么用呀?哪里能得到使用介绍呀?
WideCharToMultiByte (CP_UTF8, ...); // Unicode字符串转化成Utf8字符串
#include "Windows.h"
int main(void)
{
char str [ 256 ] = "唐志国" ; //一段UTF-8编码
WCHAR* strA;
int i= MultiByteToWideChar ( CP_ACP , 0 ,(char*) str ,-1 ,NULL,0);
strA = new WCHAR[i];
MultiByteToWideChar ( CP_ACP , 0 ,( char * ) str, -1, strA , i);
i= WideCharToMultiByte(CP_UTF8,0,strA,-1,NULL,0,NULL,NULL);
char *strB=new char[i];
WideCharToMultiByte (CP_UTF8,0,strA,-1,strB,i,NULL,NULL);
//strB即为所求 delete []strA;
i= MultiByteToWideChar ( CP_UTF8 , 0 ,(char*) strB ,-1 ,NULL,0);
strA = new WCHAR[i];
MultiByteToWideChar ( CP_UTF8 , 0 ,( char * ) strB, -1, strA , i); delete []strB;
i= WideCharToMultiByte(CP_ACP,0,strA,-1,NULL,0,NULL,NULL);
strB=new char[i];
WideCharToMultiByte (CP_ACP,0,strA,-1,strB,i,NULL,NULL);
//strB即为所求
delete []strA;
delete []strB;
return 0;
}
在你的代码中, //strB即为所求 之前 是把utf8转换成为什么每次都要有2部转换呀?
xstring(麻雀) 不是说应该是CP_ACP??