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

  • 相关阅读:
    *****.NET程序首次加載慢問題
    *****How to access a repositoryItemButtonEdit value from a FileDlg
    抽象类与接口的区别
    C#中使用Split分隔字符串的技巧
    *****User Control Instance/DataGridView.Columns in Visual Studio Design
    LinksPersistInfo not work!
    LookUpEdit用法
    Devpress.XtraGrid.GridControl 笔记
    *****动态执行sql
    *****LookUpEdit hide columns
  • 原文地址:https://www.cnblogs.com/findumars/p/10152732.html
Copyright © 2020-2023  润新知