//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. 《C/C++工程师综合练习卷》

    前言 前天拿这个<C/C++工程师综合练习卷>练习了一下,现将错题以及精题分析总结. 错题分析与总结 2 . 下面的程序可以从1-.n中随机等概率的输出m个不重复的数.这里我们假设n远大于 ...

  2. 牛客网 牛可乐发红包脱单ACM赛 B题 小a的旅行计划

    [题解] 题意其实就是把n个物品分成4个集合,其中三个集合不可以为空(只属于A.只属于B.AB的交),一个集合空或者非空都可以(不属于A也不属于B),问有多少种方案. 考虑容斥,4个集合都不为空的方案 ...

  3. luogu3157 [CQOI2011]动态逆序对

    先算出一个点前头比它大和后头比它小的数量. 每次删点就扔进一个主席树里头,防止造成重复删答案. #include <iostream> #include <cstring> # ...

  4. python的unittest单元测试框架断言整理汇总

    自动化脚本最重要的是断言,正确设置断言以后才能帮助我们判断测试用例执行结果. 一.先说说unittest常用的断言吧 常用的就以下几个,网上一搜一大堆.python版本2.7以上都可以调用了. 断言语 ...

  5. 安装weblogic时,运行configure.cmd报错、闪退、无法创建域

    直接运行configure.cmd时在jar包加载完成时,不提示创建域的过程,而是直接退出程序 命令行: cd /d F:\00uep_rfs\wls1212_dev\wls12120 切换至解压路径 ...

  6. POJ 3090 坐标系上的视线遮蔽问题

    Description A lattice point (x, y) in the first quadrant (x and y are integers greater than or equal ...

  7. BZOJ 3721: PA2014 Final Bazarek【乱搞】

    有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价. Input 第一行一个整数n(1<=n<=1000000),表示商品数量.接下来一行有n个整数,表示每件商品的价格,范 ...

  8. CodeForces - 750D New Year and Fireworks

    因为 烟花的最大范围是各个方向150格 所以 最大的空间应该是 300*300 BFS和DFS均可 模拟每一个烟花爆炸的过程 但是要注意 需要一个数组来排重 在某一个爆炸点 如果爆炸的方向 和爆炸的层 ...

  9. msp430项目编程06

    msp430中项目---设计扫描键盘 1.扫描键盘工作原理 2.电路原理说明 3.代码(显示部分) 4.代码(键盘驱动) 5.项目总结 msp430项目编程 msp430入门学习

  10. THUPC2018看题总结

    THUPC2018看题总结 #6387. 「THUPC2018」绿绿与串串 / String 据说是签到题啊. 首先根据题目的意思,我们发现如果能找到那个最后一次选择的对称轴岂不是美滋滋. 自然地,我 ...