//delphi 7 Delphi汉字简繁体转换代码
unit ChineseCharactersConvert;
 interface
 uses
   Classes, Windows;
 type
   TGBBIG5Convert = class(TObject)
   public
     class function BIG5ToGB(BIG5Str : String): AnsiString;
     class function GBToBIG5(GBStr : String): AnsiString;
     class function GBChs2Cht(GBStr: String): AnsiString;
     class function GBCht2Chs(GBStr: String): AnsiString;
 end;
 
implementation
 
class function TGBBIG5Convert.BIG5ToGB(BIG5Str : String): AnsiString;
 var
   Len: Integer;
   pBIG5Char: PChar;
   pGBCHSChar: PChar;
   pGBCHTChar: PChar;
   pUniCodeChar: PWideChar;
 begin
   //String -> PChar
   pBIG5Char := PChar(BIG5Str);
   Len := MultiByteToWideChar(950,0,pBIG5Char,-1,nil,0);
   GetMem(pUniCodeChar,Len*2);
   ZeroMemory(pUniCodeChar,Len*2);
   //Big5 -> UniCode
   MultiByteToWideChar(950,0,pBIG5Char,-1,pUniCodeChar,Len);
   Len := WideCharToMultiByte(936,0,pUniCodeChar,-1,nil,0,nil,nil);
   GetMem(pGBCHTChar,Len*2);
   GetMem(pGBCHSChar,Len*2);
   ZeroMemory(pGBCHTChar,Len*2);
   ZeroMemory(pGBCHSChar,Len*2);
   //UniCode->GB CHT
   WideCharToMultiByte(936,0,pUniCodeChar,-1,pGBCHTChar,Len,nil,nil);
   //GB CHT -> GB CHS
   LCMapString($804,LCMAP_SIMPLIFIED_CHINESE,pGBCHTChar,-1,pGBCHSChar,Len);
   Result := String(pGBCHSChar);
   FreeMem(pGBCHTChar);
   FreeMem(pGBCHSChar);
   FreeMem(pUniCodeChar);
 end;
 {进行GBK简体转繁体}
 class function TGBBIG5Convert.GBChs2Cht(GBStr: String): AnsiString;
 Var
   Len: integer;
   pGBCHTChar: PChar;
   pGBCHSChar: PChar;
 Begin
   pGBCHSChar := PChar(GBStr);
   Len := MultiByteToWideChar(936, 0, pGBCHSChar, -1, Nil, 0);
   GetMem(pGBCHTChar, Len * 2 + 1);
   ZeroMemory(pGBCHTChar, Len * 2 + 1);
   LCMapString($804, LCMAP_TRADITIONAL_CHINESE, pGBCHSChar, -1, pGBCHTChar, Len * 2);
   result := String(pGBCHTChar);
   FreeMem(pGBCHTChar);
 end;
 {进行GBK繁体转简体}
 class function TGBBIG5Convert.GBCht2Chs(GBStr: String): AnsiString;
 Var
   Len: integer;
   pGBCHTChar: PChar;
   pGBCHSChar: PChar;
 Begin
   pGBCHTChar := PChar(GBStr);
   Len := MultiByteToWideChar(936, 0, pGBCHTChar, -1, Nil, 0);
   GetMem(pGBCHSChar, Len * 2 + 1);
   ZeroMemory(pGBCHSChar, Len * 2 + 1);
   LCMapString($804, LCMAP_SIMPLIFIED_CHINESE, pGBCHTChar, -1, pGBCHSChar, Len * 2);
   result := String(pGBCHSChar);
   FreeMem(pGBCHSChar);
 end;
 class function TGBBIG5Convert.GBToBIG5(GBStr : String): AnsiString;
 var
   Len: Integer;
   pGBCHTChar: PChar;
   pGBCHSChar: PChar;
   pUniCodeChar: PWideChar;
   pBIG5Char: PChar;
 begin
   pGBCHSChar := PChar(GBStr);
   Len := MultiByteToWideChar(936,0,pGBCHSChar,-1,nil,0);
   GetMem(pGBCHTChar,Len*2+1);
   ZeroMemory(pGBCHTChar,Len*2+1);
   //GB CHS -> GB CHT
   LCMapString($804,LCMAP_TRADITIONAL_CHINESE,pGBCHSChar,-1,pGBCHTChar,Len*2);
   GetMem(pUniCodeChar,Len*2);
   ZeroMemory(pUniCodeChar,Len*2);
   //GB CHT -> UniCode
   MultiByteToWideChar(936,0,pGBCHTChar,-1,pUniCodeChar,Len*2);
   Len := WideCharToMultiByte(950,0,pUniCodeChar,-1,nil,0,nil,nil);
   GetMem(pBIG5Char,Len);
   ZeroMemory(pBIG5Char,Len);
   //UniCode -> Big5
   WideCharToMultiByte(950,0,pUniCodeChar,-1,pBIG5Char,Len,nil,nil);
   Result := String(pBIG5Char);
   FreeMem(pBIG5Char);
   FreeMem(pGBCHTChar);
   FreeMem(pUniCodeChar);
 end;
 
end.

//delphi 2010 Delphi汉字简繁体转换代码
unit ChineseCharactersConvert;
 interface
 uses
   Classes, Windows;
 type
   TGBBIG5Convert = class(TObject)
   public
     class function BIG5ToGB(BIG5Str : String): AnsiString;
     class function GBToBIG5(GBStr : String): AnsiString;
     class function GBChs2Cht(GBStr: String): AnsiString;
     class function GBCht2Chs(GBStr: String): AnsiString;
 end;
 
implementation
 
class function TGBBIG5Convert.BIG5ToGB(BIG5Str : String): AnsiString;
 var
   Len: Integer;
   pBIG5Char: PChar;
   pGBCHSChar: PChar;
   pGBCHTChar: PChar;
   pUniCodeChar: PWideChar;
 begin
   //String -> PChar
   pBIG5Char := PChar(BIG5Str);
   Len := MultiByteToWideChar(950,0,pansichar(pBIG5Char),-1,nil,0);
   GetMem(pUniCodeChar,Len*2);
   ZeroMemory(pUniCodeChar,Len*2);
   //Big5 -> UniCode
   MultiByteToWideChar(950,0,pansichar(pBIG5Char),-1,pUniCodeChar,Len);
   Len := WideCharToMultiByte(936,0,pUniCodeChar,-1,nil,0,nil,nil);
   GetMem(pGBCHTChar,Len*2);
   GetMem(pGBCHSChar,Len*2);
   ZeroMemory(pGBCHTChar,Len*2);
   ZeroMemory(pGBCHSChar,Len*2);
   //UniCode->GB CHT
   WideCharToMultiByte(936,0,pUniCodeChar,-1,pansichar(pGBCHTChar),Len,nil,nil);
   //GB CHT -> GB CHS
   LCMapString($804,LCMAP_SIMPLIFIED_CHINESE,pGBCHTChar,-1,pGBCHSChar,Len);
   Result := String(pGBCHSChar);
   FreeMem(pGBCHTChar);
   FreeMem(pGBCHSChar);
   FreeMem(pUniCodeChar);
 end;
 {进行GBK简体转繁体}
 class function TGBBIG5Convert.GBChs2Cht(GBStr: String): AnsiString;
 Var
   Len: integer;
   pGBCHTChar: PChar;
   pGBCHSChar: PChar;
 Begin
   pGBCHSChar := PChar(GBStr);
   Len := MultiByteToWideChar(936, 0, pansichar(pGBCHSChar), -1, Nil, 0);
   GetMem(pGBCHTChar, Len * 2 + 1);
   ZeroMemory(pGBCHTChar, Len * 2 + 1);
   LCMapString($804, LCMAP_TRADITIONAL_CHINESE, pGBCHSChar, -1, pGBCHTChar, Len * 2);
   result := String(pGBCHTChar);
   FreeMem(pGBCHTChar);
 end;
 {进行GBK繁体转简体}
 class function TGBBIG5Convert.GBCht2Chs(GBStr: String): AnsiString;
 Var
   Len: integer;
   pGBCHTChar: PChar;
   pGBCHSChar: PChar;
 Begin
   pGBCHTChar := PChar(GBStr);
   Len := MultiByteToWideChar(936, 0, pansichar(pGBCHTChar), -1, Nil, 0);
   GetMem(pGBCHSChar, Len * 2 + 1);
   ZeroMemory(pGBCHSChar, Len * 2 + 1);
   LCMapString($804, LCMAP_SIMPLIFIED_CHINESE, pGBCHTChar, -1, pGBCHSChar, Len * 2);
   result := String(pGBCHSChar);
   FreeMem(pGBCHSChar);
 end;
 class function TGBBIG5Convert.GBToBIG5(GBStr : String): AnsiString;
 var
   Len: Integer;
   pGBCHTChar: PChar;
   pGBCHSChar: PChar;
   pUniCodeChar: PWideChar;
   pBIG5Char: PChar;
 begin
   pGBCHSChar := PChar(GBStr);
   Len := MultiByteToWideChar(936,0,pansichar(pGBCHSChar),-1,nil,0);
   GetMem(pGBCHTChar,Len*2+1);
   ZeroMemory(pGBCHTChar,Len*2+1);
   //GB CHS -> GB CHT
   LCMapString($804,LCMAP_TRADITIONAL_CHINESE,pGBCHSChar,-1,pGBCHTChar,Len*2);
   GetMem(pUniCodeChar,Len*2);
   ZeroMemory(pUniCodeChar,Len*2);
   //GB CHT -> UniCode
   MultiByteToWideChar(936,0,pansichar(pGBCHTChar),-1,pUniCodeChar,Len*2);
   Len := WideCharToMultiByte(950,0,pUniCodeChar,-1,nil,0,nil,nil);
   GetMem(pBIG5Char,Len);
   ZeroMemory(pBIG5Char,Len);
   //UniCode -> Big5
   WideCharToMultiByte(950,0,pUniCodeChar,-1,pansichar(pBIG5Char),Len,nil,nil);
   Result := String(pBIG5Char);
   FreeMem(pBIG5Char);
   FreeMem(pGBCHTChar);
   FreeMem(pUniCodeChar);
 end;
 
end. 
---------------------
作者:清风古韵
来源:CSDN
原文:https://blog.csdn.net/ttpage/article/details/9161703
版权声明:本文为博主原创文章,转载请附上博文链接!

Delphi汉字简繁体转换代码(分为D7和D2010版本)的更多相关文章

  1. 汉字简体繁体转换----Javascript

    最近看到有个简体--繁体字互相转换的程序,是用JS实现的,感觉很好玩,所以拿来研究研究.先看看界面如下: 汉字简体繁体转换 // 0&&parent.frames.length) { ...

  2. Python实现简繁体转换,真的玩得花

    大家好鸭, 我是小熊猫 直接开搞!!! 1.opencc-python 首先介绍opencc中的Python实现库,它具有安装简单,翻译准确,使用方便等优点.对于我们日常的需求完全能够胜任. 1.1安 ...

  3. c# 文件简繁体转换

    C#   文件简繁体转换 简繁体转换: 方案一: 准确性高,耗性能 方案二: 准确性低,效率高 1 using Microsoft.International.Converters.Tradition ...

  4. asp.net简繁体转换

    简繁体转换添加Microsoft.VisualBasic.dll引用 //简转繁 string str= Microsoft.VisualBasic.Strings.StrConv("民生银 ...

  5. 我的Android进阶之旅------>Android中如何高效率的进行简繁体转换

    因为APP要做国际化适配,所以就需要顾及到香港和台湾都是使用繁体字,怎样快速便捷高效的把简体字转换成繁体字呢? 说实话我之前用的方法比较呆板,把每个需要转换的字符串进行在线翻译.今天突然发现word或 ...

  6. 利用js轻松实现页面简繁体转换

    使用方法:StranBody(); //转换对象,使用递归,逐层剥到文本 function StranBody(fobj) { if(typeof(fobj)=="object") ...

  7. C#简繁体转换

    /// <summary>/// 字符串简体转繁体/// </summary>/// <param name="strSimple"></ ...

  8. PHP实现---汉字简体繁体转换

    這是以class包裝好的簡繁體轉換的class, 另外需要兩個table檔: 1. http://www.jerry.com.tw/php/big5.map 2. http://www.jerry.c ...

  9. java代码实现简体繁体转换

    汉字分为简体和繁体字,这是众所周知的,虽然繁体字中国大陆这边用的并不会太多,但时不时的还是会使用到.那么,如何做到简体字和繁体字的转换呢?其实很简单,这里附上一个java版本的简繁体转换,用网上找的接 ...

随机推荐

  1. Flash学习笔记(01)

    一:动画基础原理 二:Flash的动画的制作方式 三:元件与实例的关系 四:Flash实例     可以做出网上常见的网页动画   Flash能为我们做什么 1.网站.贺卡.配乐短片.短剧.游戏.教学 ...

  2. bzoj2973 入门oj4798 石头游戏

    我们人为地搞出来一个全能神,每次调用他他可以给一个节点 \(1\) 个石头. 这样,当前的状态就可以由上一秒的状态搞过来,这就像是一个递推.用矩阵加速. #include <iostream&g ...

  3. exports和moudle. exports

    http://zihua.li/2012/03/use-module-exports-or-exports-in-node/ https://github.com/seajs/seajs/issues ...

  4. jmeter 断言-各种分类讲解

    jmeter中有个元件叫做断言(Assertion),它的作用和loadrunner中的检查点类似: 用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致. 使用断言 ...

  5. E-R图

    百度百科:E-R图 100多个数据库,一万多张表,能否使用一张E-R图来表示呢?它是可以的.数据设计依赖于企业的数据,而不是数据库的设计,对企业数据适当做归类,会直接导致数据设计,最终画出E-R图,数 ...

  6. POJ 1276 Cash Machine 【DP】

    多重背包的模型,但一开始直接将N个物品一个一个拆,拆成01背包竟然T了!!好吧OI过后多久没看过背包问题了,翻出背包九讲看下才发现还有二进制优化一说........就是将n个物品拆成系数:1,2,4, ...

  7. Area(poj 1654)

    题目大意:一个坐标系,从原点开始走,然后1-4分别代表,向右下走,向右走,向右上走,向下走,5代表回到原点,6-9代表,向上走,向左下走,向左走,向左上走.给出一串包含1-9的字符串,问你这些点所围成 ...

  8. [NOIP1998] 普及组

    三连击 题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数. 输入输出格式 输入格式: 木有输入 输出格式: 若干行, ...

  9. msp430入门编程44

    msp430中C语言的人机交互--菜单交互方式

  10. HTTP协议详解【转载】

    Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前 ...