没错,就是繁简体中文内码互转.
能否给我能测试的源代码? 谢谢!!

解决方案 »

  1.   

    Big5和GB码相互转换的源码http://www.delphifans.com/SoftView/SoftView_586.html
      

  2.   

    GBK<->BIG5字型转换http://www.2ccc.com/article.asp?articleid=2854
      

  3.   

    我用bcb改写的,经测试,没问题
    function Big2Gb(sBig:String ):String;
     var
       pszBig5:pchar;
       wszUnicode:pwidechar;
       pszGbt:pchar;
       pszGbs:pchar;
       sGb:string;
       iLen:integer;
     begin
       pszBig5:=nil; //Big5编码的字符
       wszUnicode:=nil; //Unicode编码的字符
       pszGbt:=nil; //Gb编码的繁体字符
       pszGbs:=nil; //Gb编码的简体字符
       iLen:=0; //需要转换的字符数
       sGb:='';   pszBig5:=pchar(sBig); //读入需要转换的字符参数   //计算转换的字符数
       iLen:=MultiByteToWideChar (950, 0, pszBig5, -1, nil,0) ;
       //给wszUnicode分配内存
       getmem(wszUnicode,iLen*(sizeof(wchar)+1));
       //转换Big5码到Unicode码,使用了API函数MultiByteToWideChar
       MultiByteToWideChar (950, 0, pszBig5, -1, wszUnicode,iLen);   //计算转换的字符数
       iLen:=WideCharToMultiByte (936, 0,  wszUnicode, -1, nil,0, nil, nil) ;
       //给pszGbt分配内存
       getmem(pszGbt,iLen+1);
       //给pszGbs分配内存
       getmem(pszGbs,iLen+1);
       //转换Unicode码到Gb码繁体,使用API函数WideCharToMultiByte
       WideCharToMultiByte (936, 0,  wszUnicode, -1, pszGbt,iLen,nil, nil) ;//转换Gb码繁体到Gb码简体,使用API函数LCMapString
       LCMapString($0804,LCMAP_SIMPLIFIED_CHINESE, pszGbt, -1, pszGbs, iLen);   //返回Gb码简体字符
       sGb:=pszGbs;   //释放内存
       freemem(wszUnicode);
       freemem(pszGbt);
       freemem(pszGbs);   result:= sGb;
    end;function Gb2Big(sGb:String):String;
    var
        pszGbt:pchar;
        pszGbs:pchar;
        wszUnicode:pwchar;
        pszBig5:pchar;
        sBig5:string;
        iLen:integer;
    begin
       pszGbt:=nil; //Gb编码的繁体字符
       pszGbs:=nil; //Gb编码的简体字符
       wszUnicode:=nil; //Unicode编码的字符
       pszBig5:=nil; //Big5编码的字符
       sBig5:=''; //返回的字符串
       iLen:=0; //需要转换的字符数   pszGbs:=pchar(sGb); //读入需要转换的字符参数//计算转换的字符数
       iLen:=MultiByteToWideChar (936, 0, pszGbs, -1, nil,0) ;   //给pszGbt分配内存
       getmem(pszGbt,iLen*2+1);
       //转换Gb码简体到Gb码繁体,使用API函数LCMapString
       LCMapString($0804,LCMAP_TRADITIONAL_CHINESE, pszGbs, -1, pszGbt, iLen*2);   //给wszUnicode分配内存
       getmem(wszUnicode,sizeof(wchar)*(iLen+1));
       //转换Gb码到Unicode码,使用了API函数MultiByteToWideChar 
       MultiByteToWideChar (936, 0, pszGbt, -1, wszUnicode,iLen);   //计算转换的字符数 
       iLen:=WideCharToMultiByte (950, 0,  wszUnicode, -1, nil,0, nil, nil) ;
       //给pszBig5分配内存 
       getmem(pszBig5,iLen+1);
       //转换Unicode码到Big5码,使用API函数WideCharToMultiByte 
       WideCharToMultiByte (950, 0,  wszUnicode, -1, pszBig5,iLen, nil, nil) ;   //返回Big5码字符
       sBig5:=pszBig5;   //释放内存
       Freemem(wszUnicode);
       Freemem(pszGbt);
       Freemem(pszBig5);   result:= sBig5;
    end;