zoukankan      html  css  js  c++  java
  • Delphi汉字简繁体转换代码(分为D7和D2010版本)

    //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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    python wx安装
    HttpPost请求将带有数组json格式数据作为请求体传入的简单处理方法
    介绍基于camera和IMU的SLAM算法数据采集环境搭建
    《Linux操作系统分析》课程学习总结报告
    安装Sophus出现error: lvalue required as left operand of assignment unit_complex_.real() = 1.问题的解决办法
    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程
    深入理解系统调用
    基于mykernel 2.0编写一个操作系统内核
    QT 无法运行“rc.exe”?
    linux上boost库编程cmake配置出错
  • 原文地址:https://www.cnblogs.com/findumars/p/10152732.html
Copyright © 2011-2022 走看看