在網上下載了一些資料:
unit big_gbtobig;interface
function Big52GB(BIG5Str : String): AnsiString;{进行big5转GB内码}
function GB2Big5(GBStr : String): AnsiString;  {进行GB转BIG5内码}
function GBCht2Chs(GBStr : String): AnsiString;{进行GBK繁体转简体}
function GBChs2Cht(GBStr : String): AnsiString;{进行GBK简体转繁体}implementation
uses Windows;
   
function Big52GB(BIG5Str : String): AnsiString;
{进行big5转GB内码}
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;function GB2Big5(GBStr : String): AnsiString;
{进行GB转BIG5内码}
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;function GBCht2Chs(GBStr : String): AnsiString;
{进行GBK繁体转简体}
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);
  //GB CHS -> GB CHT
  LCMapString($804,LCMAP_SIMPLIFIED_CHINESE,pGBCHTChar,-1,pGBCHSChar,Len*2);
  Result := String(pGBChsChar);
  //FreeMem(pGBCHTChar);
  FreeMem(pGBCHSChar);
end;function GBChs2Cht(GBStr : String): AnsiString;
{进行GBK简体转繁体}
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);
  //GB CHS -> GB CHT
  LCMapString($804,LCMAP_TRADITIONAL_CHINESE,pGBCHSChar,-1,pGBCHTChar,Len*2);
  Result := String(pGBCHTChar);
  FreeMem(pGBCHTChar);
  //FreeMem(pGBCHSChar);
end;
end.function GBCht2Chs(GBStr : String): AnsiString;{进行GBK繁体转简体}
function GBChs2Cht(GBStr : String): AnsiString;{进行GBK简体转繁体}
在簡體操作系統中使用可以很好的完成轉換,但到繁體操作系統中使用時則會轉換為亂碼。
請大家幫助,有沒有在簡繁體操作系統中都可以正常轉換的例子。。先行謝謝了!