把字符串转成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);

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
  • 143894

Unicode与UTF-8互转(C语言实现)

>                 Tags: encoding,c 1. 基础 1.1 ASCII码 我们知道, 在计算机内部, 所有的信息最终都表示为一个二进制的字符串. 每一...
  • tge7618291
  • tge7618291
  • 2012年05月24日 20:58
  • 78404

字符串与UTF_8的相互转换

qqq
  • u012108436
  • u012108436
  • 2016年05月27日 09:25
  • 1411

怎么把存储UTF-8编码的字符串转换成实际字符

踩过的坑1:怎么把存储UTF-8编码的字符串转换成实际字符首先说明下问题。之前用爬虫从网上down数据的时候因为没有思考到位,结果出现了一个很奇葩的问题。一般来说中文采用UTF8编码后写成byte[]...
  • u011518120
  • u011518120
  • 2016年03月16日 23:01
  • 1553

[参考资料] PB中字符编码转换[ansi, UTF8, Unicode]

[参考资料] PB中字符编码转换[ansi, UTF8, Unicode]
  • smilysoft
  • smilysoft
  • 2017年03月22日 12:25
  • 917

JS中文字符串和UTF-8编码字符串相互转换

JS中文字符串和UTF-8编码字符串相互转换1.中文字符串转化为UTF-8编码,如“”的UTF-8编码为“%3C%E6%B1%89%E5%AD%97%3E” 2.UTF-8编码字符串“%E6%B1%...
  • xinghuo0007
  • xinghuo0007
  • 2016年11月07日 10:13
  • 5027

PHP实现Unicode和Utf-8互相转换

一. 编码原理及实现   unicode编码是实现utf-8与gb系列编码(gb2312、gbk、gb18030)转换的基础,虽然我们也可以直接做一个utf-8到这些编码 的对照表,但很少有人会这么做...
  • hanzengyi
  • hanzengyi
  • 2016年12月05日 10:31
  • 1991

JS实现unicode和UTF-8互转

有一设备,为短信网关。需将PC送过来的UTF-8转换成UNICODE才能将内容通过短信发送出去,同样,接收到的短信为unicode编码,也许转换成UTF-8才能在PC端软件显示出来。程序很简单,只是走...
  • shjhuang
  • shjhuang
  • 2017年07月05日 01:32
  • 1316

encode_json 转换给定的perl数据结构为一个UTF-8编码的 2进制字符串 decode_json把UTF-8字节转换成字符

centos6.5:/root#perl t1.pl [{"age":19,"name":"科比"},{"name":"乔丹","age":25}] [{"age":19,"name...
  • zhaoyangjian724
  • zhaoyangjian724
  • 2016年12月21日 20:50
  • 742

多字节编码字符串与UTF8字符编码的转换

1、多字节编码字符串转UTF8字符编码
  • suxinpingtao51
  • suxinpingtao51
  • 2014年09月10日 14:09
  • 2009
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:把字符串转成UTF-8格式
举报原因:
原因补充:

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