//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. Python面向对象之模块和包

    模块 模块的概念 模块是Python程序架构的一个核心概念 所有以.py结尾的源文件都是一个模块: 模块名也是标识符,需要遵循标识符的命名规则: 在模块中定义的全局变量,类,函数,都是直接给外界使用的 ...

  2. python基础002

    1.pycharm安装与添加解释器 专业版.英文界面,不要汉化—一定要尊重知识产权 算术运算符:+ - * / // % ** ^ 布尔运算符:== > < >= <= 逻辑运 ...

  3. js总结(一):javascript的类型:基本类型、对象和数组

    javascript 类型分为2种,一个是原始值,另一个是复杂值(对象). 一.原始值 5个原始值是:数字,字符,布尔,null,undefined. 9个原生的对象构造函数:Number Strin ...

  4. Android学习2013年10月11日

    1.LinearLayout http://www.cnblogs.com/salam/archive/2010/10/20/1856793.html LinearLayout是线性布局控件,它包含的 ...

  5. BeautifulSoup实例

    Beautiful Soup 4.4.0 中文文档:http://beautifulsoup.readthedocs.io/zh_CN/latest/ #coding:utf-8from bs4 im ...

  6. Java实战及解析 — Maven快速入门

    五分钟快速入门 mvn --version mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -Darche ...

  7. hexo干货系列:(总纲)搭建独立博客初衷

    前言 我是一名程序员,以前知识整理都是整理在为知笔记上,博客用的比较少,更别说是使用独立博客,因为不会... 2016年过年在家期间偶然的机会萌发了自己要搭建一个属于自己的独立博客的想法,于是就有了下 ...

  8. JIRA 6.3.6安装

    一:下载JIRA 从官网下载:https://www.atlassian.com/software/jira/download 我下载的版本是Linux版的 JIRA 6.3.6 wget http: ...

  9. ubuntu使用git的时:Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.

    1:问题现象: hlp@hlp:~/code/github_code/catch_imooc1$ git push origin master Warning: Permanently added t ...

  10. LCA 在线倍增法 求最近公共祖先

    第一步:建树  这个就不说了 第二部:分为两步  分别是深度预处理和祖先DP预处理 DP预处理: int i,j; ;(<<j)<n;j++) ;i<n;++i) ) fa[i ...