//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. 虚拟机如何设置静态IP

    一.本机环境 Mac.VMware Fusion 10, CentOS6.8 二.设置静态IP地址 1.选择网络连接模式,选择NAT模式 注意: 1)必须要选择NAT模式,否则你的虚拟机与主机始终会在 ...

  2. 南阳理工 58 最少步数 (DFS)

    描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0, ...

  3. Sticky footer经典布局--绝对底部布局

    原文转载于:https://cnodejs.org/topic/56ebdf2db705742136388f71 何为Sticky footer布局? 我们常见的网页布局方式一般分为header(页头 ...

  4. Python 单向队列Queue模块详解

    Python 单向队列Queue模块详解 单向队列Queue,先进先出 '''A multi-producer, multi-consumer queue.''' try: import thread ...

  5. 77. Spring Boot Use Thymeleaf 3【从零开始学Spring Boot】

    [原创文章,转载请注明出处] Spring Boot默认选择的Thymeleaf是2.0版本的,那么如果我们就想要使用3.0版本或者说指定版本呢,那么怎么操作呢?在这里要说明下 3.0的配置在spri ...

  6. 65.什么是IOC?【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 这个小节吧,是无意当中看了一篇文章,觉得介绍的特别好,引用到我的博客中,让大家也乐下.那么他是怎么解说IOC的呢?看如下: 套用好莱坞的一句名言就 ...

  7. 【数据传输 1】服务器—>客户端之间的数据类型转换

    导读:在做项目的时候,在controller中,将List数据类型转换为了JSON字符串,那么,为什么要将其数据转换为JOSN呢?这样的转换是否是必须的,在这个转换过程中,又经过了那些步骤?注:本篇博 ...

  8. HDU 2222 最简单的AC自动机套模板应用

    HDU 2222 题意:给出N(N<=10,000)个单词,每个单词长度不超过50.再给出一个字符串S,字符串长度不超过1,000,000.问有多少个单词出现在了字符串S中.(单词可能重复,单词 ...

  9. HDU 1102 Kruscal算法

    题目大意:给定村庄的数量,和一个矩阵表示每个村庄到对应村庄的距离,矩阵主对角线上均为1 在给定一个数目Q,输入Q行之间已经有通道的a,b 计算还要至少修建多少长度的轨道 这道题目用Kruscal方法进 ...

  10. centos 6.5 yum安装lnmp

    转自:http://blog.csdn.net/lane_l/article/details/20235909 准备篇: 端口 vi /etc/sysconfig/iptables -A INPUT ...