各位兄台谁能提供给小弟一个关于汉字的繁体与简体的转换算法,小弟感激不尽

解决方案 »

  1.   

    unit Unit2;interface
    uses
      SysUtils, Windows;
      function Big5StringToGBString(Src : string) : string;
    implementation
    function StrConv(pszSrc : PChar; cpSrc : UINT; pszDest : PChar; cbDest :
    Longint; cpDest : UINT) : Longint;
    var
     buf : PWideChar;
     cwLen : LongInt;
    begin
     cwLen := MultiByteToWideChar(cpSrc,
      0,
      pszSrc,
      -1,
      nil,
      0);
     GetMem(buf, (cwLen+1) * SizeOf(WideChar));
     ZeroMemory(buf, (cwLen+1) * SizeOf(WideChar));
     MultiByteToWideChar(cpSrc,
      0,
      pszSrc,
      StrLen(pszSrc),
      buf,
      cwLen+1);
     Result := WideCharToMultiByte(cpDest,
      0,
      buf,
      -1,
      pszDest,
      cbDest,
      nil,
      nil);
     FreeMem(buf);
    end;function StringConv(const Src : string; cpSrc, cpDest : UINT) : string;
    var
     buf : PChar;
     len : Longint;
    begin
     len := StrConv(PChar(Src), cpSrc, nil, 0, cpDest);
     GetMem(buf, len);
     ZeroMemory(buf, len);
     StrConv(PChar(Src), cpSrc, buf, len, cpDest);
     Result := string(buf);
     FreeMem(buf);
    end;function CHTStringToCHSString(Src : string) : string;
    var
     buf : PChar;
     len : Integer;
    begin
     len := LCMapString($804, // LCID_CHINESE_SIMPLIFIED
      LCMAP_SIMPLIFIED_CHINESE,
      PChar(Src),
      -1,
      nil,
      0);
     GetMem(buf, len);
     ZeroMemory(buf, len);
     LCMapString($804, // LCID_CHINESE_SIMPLIFIED
      LCMAP_SIMPLIFIED_CHINESE,
      PChar(Src),
      -1,
      buf,
      len);
     Result := string(buf);
     FreeMem(buf);
    end;function CHSStringToCHTString(Src : string) : string;
    var
     buf : PChar;
     len : Integer;
    begin
     len := LCMapString($404, // LCID_CHINESE_SIMPLIFIED
      LCMAP_TRADITIONAL_CHINESE,
      PChar(Src),
      -1,
      nil,
      0);
     GetMem(buf, len);
     ZeroMemory(buf, len);
     LCMapString($404, // LCID_CHINESE_SIMPLIFIED
      LCMAP_TRADITIONAL_CHINESE,
      PChar(Src),
      -1,
      buf,
      len);
     Result := string(buf);
     FreeMem(buf);
    end;function CHTToCHS(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
    begin
     Result := LCMapString($804, // LCID_CHINESE_SIMPLIFIED
      LCMAP_SIMPLIFIED_CHINESE,
      pszSrc,
      -1,
      pszDest,
      cbDest);
    end;function CHSToCHT(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
    begin
     Result := LCMapString($404, // LCID_CHINESE_SIMPLIFIED
      LCMAP_TRADITIONAL_CHINESE,
      pszSrc,
      -1,
      pszDest,
      cbDest);
    end;function Big5StringToGBString(Src : string) : string;
    begin
     Result := CHTStringToCHSString(StringConv(Src, 950, 936));
    end;function Big5ToGB(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
    var
     buf : PChar;
     len : Integer;
    begin
     len := StrLen(pszSrc)+1;
     GetMem(buf, len*2);
     ZeroMemory(buf, len*2);
     StrConv(pszSrc, 950, buf, 936, len*2);
     Result := CHTToCHS(buf, pszDest, cbDest);
     FreeMem(buf);
    end;function GBStringToBig5String(Src : string) : string;
    begin
     Result := CHSStringToCHTString(StringConv(Src, 936, 950));
    end;function GBToBig5(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
    var
     buf : PChar;
     len : Integer;
    begin
     len := StrLen(pszSrc)+1;
     GetMem(buf, len*2);
     ZeroMemory(buf, len*2);
     StrConv(pszSrc, 936, buf, 950, len*2);
     Result := CHSToCHT(buf, pszDest, cbDest);
     FreeMem(buf);
    end;end.
      

  2.   

    盒子中有两个演示程序,你去下载来看看可不可以,如果可以记得要给分哦:
    http://www.delphibox.com/article.asp?articleid=823
    http://www.delphibox.com/article.asp?articleid=79另注:需要注册才能下载的,不知你有没有,如果没有就给我邮箱,我给你寄也行。
          记住可以你说过的话哦,五百分
      

  3.   

    发给我嘛,我难得去下载,[email protected]
      

  4.   

    GB2312BIG5不行,但是另外一个是可以的,我不能给500分,等我把另外一个调试成功后再给你