把字符串转成UTF-8格式

转载 2004年07月21日 14:19:00

(1)

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; 
 delete  []strB; 
 return  0; 

(2)

int  main(void) 

 char  str  [  256  ]  =  "唐志国"  ;   
 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; 
 delete  []strB; 
 return  0; 

(3)

int  main(void) 

 char  str  [  256  ]  =  "唐志国"  ;   
 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; 
 delete  []strB; 
 return  0; 

(4)

这里面包含了两个方向的转换,你看一下吧
#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; 

(5)

这是转换函数:
 int CodePageConvert(UINT SrcCodePage, LPCTSTR pBuff, int iBuffLen, UINT DestCodePage, char* &lpCodePage)
 {
  int iWideCharCnt = ::MultiByteToWideChar(SrcCodePage, 0, pBuff, iBuffLen, NULL, 0);
  LPWSTR lpszWideChar = new wchar_t[iWideCharCnt + 1];
  memset(lpszWideChar, 0, (iWideCharCnt + 1) * sizeof(WCHAR));
  iWideCharCnt = MultiByteToWideChar(SrcCodePage, 0, pBuff, iBuffLen, lpszWideChar, iWideCharCnt);

  if(DestCodePage == 54936
    && !IsValidCodePage(54936))
   DestCodePage = 936;

  int iDestCnt = WideCharToMultiByte(DestCodePage, 0, lpszWideChar, iWideCharCnt, NULL, 0, NULL, NULL);
  lpCodePage = new char[iDestCnt + 1];
  memset(lpCodePage, 0, iDestCnt + 1);
  iDestCnt = WideCharToMultiByte(DestCodePage, 0, lpszWideChar, iWideCharCnt, lpCodePage, iDestCnt, NULL, NULL);

  delete []lpszWideChar; 
  return iDestCnt;
 }
下面是调用方法:
   utf-8 到 gbk
 int nLen = CodePageConvertUnix("UTF-8",_T("标准"),2,"GBK",lpOut);
   gbk 到utf-8
int nLen = CodePageConvertUnix("UTF-8",_T("标准"),2,"GBK",lpOut);

[iOS]把字符串汉字转换成UTF-8编码

ASCII码相信很熟悉了,只是自己一直都记不住基本规律,有时候用起来十分不爽。 ASCII,共7位,表示128个字符,一般都在前面加0补全8位形成一个Bit。0~31以及127为控制字符,不能打...
  • s133315202
  • s133315202
  • 2015-08-29 00:22:36
  • 12260

ios9 字符串与UTF-8 互相转换

在数据网路请求或其他情况下,需要将字符串转换成UTF-8编码  ios9后对其方法进行了修改 NSString *str = @"北京"; 把这个转成UTF8以前我们使用的是 ...
  • Perfect_Milk
  • Perfect_Milk
  • 2016-08-22 17:12:38
  • 3113

JAVA GBK 字符串转为utf-8

String str = "µâº£´¼×¢ÉäÒ"; byte[] fullByte1 = new String(str.getBytes("ISO-8859-1"), "GBK") ...
  • yangxiaojun9238
  • yangxiaojun9238
  • 2013-01-08 21:58:50
  • 7013

字符串与UTF_8的相互转换

qqq
  • u012108436
  • u012108436
  • 2016-05-27 09:25:20
  • 1773

字符串转UTF-8

String  message  = new String(message.getBytes("gbk"),"utf-8");
  • guojinyu_001
  • guojinyu_001
  • 2017-09-17 12:26:29
  • 52

转UTF-8为字符串、中文字符串

转载自:http://www.wang1314.com/doc/topic-663472-1.html function getCharFromUtf8(str) {         ...
  • zld614027581
  • zld614027581
  • 2016-07-04 18:27:11
  • 84

java String 转utf-8编码

/** * Get XML String of utf-8 * * @return XML-Formed string */ public static String getUTF8XML...
  • sunny243788557
  • sunny243788557
  • 2012-11-20 09:18:39
  • 146294

stringBuffer的toString乱码问题

首先 String string = new String(stringBuffer.toString().getBytes(),"UTF-8"); 如果还是乱码,修改编译器是编码方式,(附int...
  • yin__ren
  • yin__ren
  • 2017-08-29 13:39:21
  • 860

c语言下汉字转换(字符串改为utf-8编码)

相信大家应该都知道,汉字经过utf-8后转码会
  • wenbo_peng
  • wenbo_peng
  • 2014-08-18 16:02:09
  • 6839

关于生成utf-8格式的文件

因为刚学安卓,所以想做一些东西来练练手,在做的时候有一个这样的问题把我困住了:我需要很多文件来存储数据,我也想到了用代码来创建一些有规律的文件。这样读取的时候也好读一些。但是文件的默认编码不是utf-...
  • sinat_33009513
  • sinat_33009513
  • 2015-11-24 20:20:46
  • 822
收藏助手
不良信息举报
您举报文章:把字符串转成UTF-8格式
举报原因:
原因补充:

(最多只允许输入30个字)