请问如何在"繁体"操作系统下转出"简体"的文字的.Txt或.Word文档?
  我通过Big5toGb2转换程序可在delphi中显示简体字,可转出Txt或Word文档,打开后简体字是乱码,请问有没有什么解决办法?谢谢!!

解决方案 »

  1.   

    试试这几个函数:{内码转换}
    function Big5ToGB(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 GBToBig5(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 GBKChtToChs(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 GBKChsToCht(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;
      

  2.   

    给个参考你
    http://community.csdn.net/Expert/topic/4150/4150577.xml?temp=.6435968