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

  • 相关阅读:
    MS SQL Server备份与恢复实例
    如何加快查询,优化数据库
    使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引
    URL重写可删节日期模式正则表达式之强力应用
    索引全攻略
    大数据量分页存储过程效率测试附代码
    形成查询结果(实体框架) 使用导航属性导航关系
    C#开源资源大汇总
    大数据量的系统的数据库结构如何设计?
    数据库查询优化
  • 原文地址:https://www.cnblogs.com/findumars/p/10152732.html
Copyright © 2020-2023  润新知