用 API 作简繁体转换
程序员之家 作者:不祥 日期:2004-4-1 9:55:00

--------------------------------------------------------------------------------
 
1. 输入Big5字符,返回Gb简体字符
    //---------------------------------------------------------------------------
    //函数输入Big5字符,返回Gb简体字符
    //---------------------------------------------------------------------------
    AnsiString __fastcall Big2Gb(AnsiString sBig)
    {
     char* pszBig5=NULL; //Big5编码的字符
     wchar_t* wszUnicode=NULL; //Unicode编码的字符
     char* pszGbt=NULL; //Gb编码的繁体字符
     char* pszGbs=NULL; //Gb编码的简体字符
     AnsiString sGb; //返回的字符串
     int iLen=0; //需要转换的字符数
   
     pszBig5=sBig.c_str(); //读入需要转换的字符参数
   
     //计算转换的字符数
     iLen=MultiByteToWideChar (950, 0, pszBig5, -1, NULL,0) ;
     //给wszUnicode分配内存
     wszUnicode=new wchar_t[iLen+1];
     //转换Big5码到Unicode码,使用了API函数MultiByteToWideChar
     MultiByteToWideChar (950, 0, pszBig5, -1, wszUnicode,iLen);
   
     //计算转换的字符数
     iLen=WideCharToMultiByte (936, 0, (PWSTR) wszUnicode, -1, NULL,0, NULL, NULL) ;
     //给pszGbt分配内存
     pszGbt=new char[iLen+1];
     //给pszGbs分配内存
     pszGbs=new char[iLen+1];
     //转换Unicode码到Gb码繁体,使用API函数WideCharToMultiByte
     WideCharToMultiByte (936, 0, (PWSTR) wszUnicode, -1, pszGbt,iLen, NULL, NULL) ;
   
     //转换Gb码繁体到Gb码简体,使用API函数LCMapString
     LCMapString(0x0804,LCMAP_SIMPLIFIED_CHINESE, pszGbt, -1, pszGbs, iLen);
   
     //返回Gb码简体字符
     sGb=pszGbs;
   
     //释放内存
     delete [] wszUnicode;
     delete [] pszGbt;
     delete [] pszGbs;
    
     return sGb;
    }

2. 输入Gb字符,返回Big5字符
    //---------------------------------------------------------------------------
    //函数输入Gb字符,返回Big5字符
    //---------------------------------------------------------------------------
    AnsiString __fastcall Gb2Big(AnsiString sGb)
    {
     char* pszGbt=NULL; //Gb编码的繁体字符
     char* pszGbs=NULL; //Gb编码的简体字符
     wchar_t* wszUnicode=NULL; //Unicode编码的字符
     char* pszBig5=NULL; //Big5编码的字符
     AnsiString sBig5; //返回的字符串
     int iLen=0; //需要转换的字符数
   
     pszGbs=sGb.c_str(); //读入需要转换的字符参数
   
     //计算转换的字符数
     iLen=MultiByteToWideChar (936, 0, pszGbs, -1, NULL,0) ;
   
     //给pszGbt分配内存
     pszGbt=new char[iLen*2+1];
     //转换Gb码简体到Gb码繁体,使用API函数LCMapString
     LCMapString(0x0804,LCMAP_TRADITIONAL_CHINESE, pszGbs, -1, pszGbt, iLen*2);
   
     //给wszUnicode分配内存
     wszUnicode=new wchar_t[iLen+1];
     //转换Gb码到Unicode码,使用了API函数MultiByteToWideChar
     MultiByteToWideChar (936, 0, pszGbt, -1, wszUnicode,iLen);
   
     //计算转换的字符数
     iLen=WideCharToMultiByte (950, 0, (PWSTR) wszUnicode, -1, NULL,0, NULL, NULL) ;
     //给pszBig5分配内存
     pszBig5=new char[iLen+1];
     //转换Unicode码到Big5码,使用API函数WideCharToMultiByte
     WideCharToMultiByte (950, 0, (PWSTR) wszUnicode, -1, pszBig5,iLen, NULL, NULL) ;
   
     //返回Big5码字符
     sBig5=pszBig5;
   
     //释放内存
     delete [] wszUnicode;
     delete [] pszGbt;
     delete [] pszBig5;
   
     return sBig5;
    }

Big5和Gb编码转换相关推荐

  1. BIG5到GB的转换技术

    中文因为数量太多,所以与英文用ASCII码一个字节表示不同,它使用两个字节来   表示.通过计算这两个字节,我们可以得到其表示的汉字在中   文字库中的位置.读取该位置的若干字节,以获得表示这个汉字的 ...

  2. vc中GB2312,BIG5,Unicode编码转换

    本文主要讨论的是VC编译环境下,实现字符串和文件编码方式转换的实现,linux下请使用Strconv. 一.文件编码格式转换 //GB2312 编码文件转换成 Unicode: if((file_ha ...

  3. gb编码转换utf8

    查看文件编码信息 file file.txt 换行符CR转换为LF dos2unix file.txt 使用vim转换编码 vim vehicle_record_enp_20220401.txt -c ...

  4. html utf8转换工具,GB/BIG5/UTF-8 文件编码批量转换工具

    GB/BIG5/UTF-8 文件编码批量转换工具是一款单一文件与批量转换编码工具将 GB.BIG5.UTF-8 文件相互转换,方便的批量处理能力,主要用于网站文件编码方式的整体转换上. 某天, ...

  5. php文件在线编码转换,gbk编码在线转换_php汉字转码 GBK到Big5编码转换

    摘要 腾兴网为您分享:php汉字转码 GBK到Big5编码转换,月星家居,永辉生活,一点开,幸福钱庄等软件知识,以及酷我音乐车机,爱情电影网影音,杜比音效,微信制作宣传广告,dolbyadvanced ...

  6. delphi 编码转换 unicode gbk big5

    http://parad1se.bokee.com/6250501.html delphi 编码转换 unicode gbk big5 以下代码在DELPHI 7上调试通过,主要使用了api函数中Mu ...

  7. GB编码与UTF8编码的转换【转载】

    在主函数app后加上这句: QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030")); 然后是从UTF8 ...

  8. python编码规范总结、python编码转换

    python编码规范总结.python编码转换 所有的 Python 脚本文件都应在文件头标上 #-*- coding:utf8 -*- .设置编辑器,默认保存为 utf8 格式. 编码 Python ...

  9. Linux终端语系设置,iconv语系编码转换命令

    一.介绍 有时候在命令行输入命令后会显示乱码,其实是语系的不一样导致的:比如说在英语语序下不会显示中文 打印中文语系的日期 将中文语系改为英语语系 提示:设置语系只在本次命令行操作中生效,退出命令行后 ...

  10. python 编码转换 专题

    主要介绍了python的编码机制,unicode, utf-8, utf-16, GBK, GB2312,ISO-8859-1 等编码之间的转换. 常见的编码转换分为以下几种情况: 自动识别 字符串编 ...

最新文章

  1. 百家中华老字号故宫过大年
  2. 鸟哥的Linux私房菜(基础篇)-第五章、首次登陆与在线求助 man page
  3. python自动上传图片_使用Python实现一个简单的图片上传存储服务
  4. java基础--网络编程
  5. LeetCode OJ 160. Intersection of Two Linked Lists
  6. 二叉树垂直遍历 java_【004】二叉树垂直遍历
  7. C++:类访问修饰符
  8. BigPipe 大的页面分割成一个一个管道
  9. 三星性能测试软件,三星R25的性能测试
  10. Java基础小常识-final,抽象类,接口-(11)
  11. 【安全资讯】热门Windows激活软件KMSPico被植入恶意程序
  12. 【EDA】8 路彩灯控制器设计与实现
  13. 菜鸟教程的Linux命令大全
  14. 正则html标签sublime,sublimetext 使用正则表达式匹配中文
  15. Swift游戏实战-跑酷熊猫 02 创建熊猫类
  16. DLL load failed: %1 不是有效的 Win32 应用程序的解决办法
  17. 猜词游戏(类似于Hang子手)
  18. 大数据与人工智能论文
  19. EXCEL 删除表格内的空格和空白字符
  20. YUI中一些方法总结

热门文章

  1. java毕业设计成品基于SSM+Bootstrap+MYSQL演唱会网上订票系统
  2. windows 安装 docker destop
  3. eclipse tomcat lomboz的安装配置说明
  4. lomboz 官方网址
  5. 手把手教你创建 Alexa Smart Home Skill (二)
  6. Java 项目开发流程
  7. 疯狂java讲义第二章课后习题答案
  8. 通达信 c 语言,通达信C
  9. 51单片机红绿灯(十字路口智能控制系统)
  10. 数据迁移 java_数据迁移的成功策略