CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

字符串转码:UTF-8转为GBK

楼主zxs790501(沧海一粟)2006-03-20 21:41:44 在 VC/MFC / 基础类 提问

//把格式为sourceCodepage字符串转换为targetCodepage格式  
  CString   CCoSMSReplies::Convert(CString   str,   int   sourceCodepage,   int   targetCodepage)  
  {  
  int   len   =   str.GetLength();  
  int   unicodeLen   =   MultiByteToWideChar(sourceCodepage,0,str,-1,NULL,0);  
  wchar_t*   pUnicode;  
  pUnicode   =   new   wchar_t[unicodeLen+1];  
  memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));  
  MultiByteToWideChar(sourceCodepage,0,str,-1,(LPWSTR)pUnicode,unicodeLen);  
  BYTE   *   pTargetData   =   NULL;  
  int   targetLen   =   WideCharToMultiByte(targetCodepage,0,(LPWSTR)pUnicode,-1,  
  (char   *)pTargetData,0,NULL,NULL);  
  pTargetData   =   new   BYTE[targetLen+1];  
  memset(pTargetData,0,targetLen+1);  
  WideCharToMultiByte(targetCodepage,0,(LPWSTR)pUnicode,-1,  
  (char   *)pTargetData,targetLen,NULL,NULL);  
  CString   rt;  
  rt.Format("%s",pTargetData);  
  delete   pUnicode;  
  pUnicode   =   NULL;  
  delete   pTargetData;  
  pTargetData   =   NULL;  
  return   rt;  
  }  
   
  这是一个网友的代码,不知道如何将UTF-8转为GBK呢?  
  也就是说:int   sourceCodepage,   int   targetCodepage   分别填多少? 问题点数:20、回复次数:8Top

1 楼Snow_Ice11111(雪上加冰)回复于 2006-03-20 22:30:49 得分 0

http://community.csdn.net/Expert/topic/4549/4549292.xml?temp=.8150446Top

2 楼Snow_Ice11111(雪上加冰)回复于 2006-03-20 22:39:44 得分 0

就你的情况,分别用CP_UTF8和CP_ACP试一下。Top

3 楼vcmute(BCare4 H1Rest Good9!)回复于 2006-03-20 22:45:40 得分 0

UTF-8先转为UNICODE,再转为GBKTop

4 楼zxs790501(沧海一粟)回复于 2006-03-23 21:17:28 得分 0

vcmute(不争)    
   
  :  
   
  请问如何转?  
   
  解决问题者另外开贴加200分。Top

5 楼zxs790501(沧海一粟)回复于 2006-03-23 21:35:44 得分 0

Snow_Ice11111(雪上加冰)    
  用CP_UTF8和CP_ACP试过了,乱码转换后,还是乱码。  
   
  vcmute(不争)    
  UTF-8先转为UNICODE,再转为GBK  
  ================  
  我试过的,转码后,还是乱码。  
   
  不知道哪位高人有测试通过的代码?  
   
  急用,有解决问题者另开贴给200分。Top

6 楼vcmute(BCare4 H1Rest Good9!)回复于 2006-03-23 22:02:37 得分 20

>UTF-8先转为UNICODE,再转为GBK  
  测试没问题啊,如下  
  char   i,strUTF[18]={0xE4,0xB8,0x80,0xE6,0xAE,0xB5,0x55,0x54,0x46,0x2D,0x38,0xE7,0xBC,0x96,0xE7,0xA0,0x81};        
  i=   MultiByteToWideChar(CP_UTF8,0,strUTF,-1,NULL,0);        
  WCHAR   *strUnicode=new   WCHAR[i];        
  MultiByteToWideChar   (CP_UTF8,0,strUTF,-1,strUnicode,i);    
   
  i=   WideCharToMultiByte(CP_ACP,0,strUnicode,-1,NULL,0,NULL,NULL);        
  char   *strGBK   =   new   char[i];        
  WideCharToMultiByte   (CP_ACP,0,strUnicode,-1,strGBK,i,NULL,NULL);Top

7 楼zxs790501(沧海一粟)回复于 2006-03-31 19:08:32 得分 0

vcmute(不争)   :  
  你最后提供的程序,我还没有测试,utf-8格式的字符不是这样的吗:  
  %B%E%D  
   
  ?Top

8 楼zxs790501(沧海一粟)回复于 2006-04-04 08:53:24 得分 0

vcmute(不争)   :  
  你的代码我测了,是正确的,我另外开一贴“vcmute(不争)   请进”,你去拿分吧。Top

相关问题

  • 怎么把GB2312的字符串转为UNICODE的字符串?
  • 如何将unicoe字符串转为Ansi字符串?
  • ID转为 字符串 不用MFC
  • 将ASCII转为字符串问题!
  • 怎样将字符串转为数字?
  • 字符串“20050328”怎么转为“2005-3-28”
  • 字符串分割,转为数组
  • 字符串如何转为DATETIME类型
  • 如何将Unicode字符串转为Ansi/MBCS字符串(含中文字符的)
  • SQL 有没有办法将UTF-8字符串转成中文字符串?

关键词

  • 乱码
  • 代码
  • unicode
  • null
  • ptargetdata
  • 转为
  • sourcecodepage
  • targetcodepage
  • targetlen
  • unicodelen

得分解答快速导航

  • 帖主:zxs790501
  • vcmute

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo