我从一台繁体系统的机器1中,发送中文数据到简体系统中,出现乱码,
请问怎样把那一串字符str转换到简体系统中都能正确显示呢?
是不是big5转换成为gb2312,具体怎样做

解决方案 »

  1.   

    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;