我根据网上的代码写了一个简体转繁体的ASP组件,转换出来的结果不正确,请大家帮忙看看。
组件代码如下(节选):
function TGB2BIG5.Simplified2Traditional(mSimplified: WideString): WideString;
{
  简体中文转换为繁体中文,仅支持Win2K以上版本
}
var
  L: Integer;
begin
  L := Length(mSimplified);
  SetLength(result, L);
  LCMapString(GetUserDefaultLCID,
    LCMAP_TRADITIONAL_CHINESE, PChar(mSimplified), L, @result[1], L);
end; { Simplified2Traditional }function TGB2BIG5.S2T(const mSimplified: WideString): OleVariant;
begin
  Result :=Simplified2Traditional(mSimplified);
end;ASP文件的调用代码如下:
<%@ CodePage=950 %>
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
</head>
<BODY>
<TITLE> Testing </TITLE>
<HR>
<%
Response.Charset="big5"
dim strOS
strOS=""
%>
<% Set DelphiASPObj = Server.CreateObject("GB2BIG5ASP.GB2BIG5") 
   strOS=DelphiASPObj.S2T("中华人民共和国")
Response.write strOS
%>
<HR>
</BODY>
</HTML>页面返回结果如下:
笢貌&#63509;I 

解决方案 »

  1.   

    function Simplified2Traditional(mSimplified: string): string;
    var
      L: Integer;
    begin
      L := Length(mSimplified);
      SetLength(Result, L);
      LCMapString(GetUserDefaultLCID,
        LCMAP_TRADITIONAL_CHINESE, PChar(mSimplified), L, @Result[1], L);
    end; { Simplified2Traditional }function Traditional2Simplified(mTraditional: string): string;
    var
      L: Integer;
    begin
      L := Length(mTraditional);
      SetLength(Result, L);
      LCMapString(GetUserDefaultLCID,
        LCMAP_SIMPLIFIED_CHINESE, PChar(mTraditional), L, @Result[1], L);
    end; { Traditional2Simplified }procedure TForm1.Button1Click(Sender: TObject);
    begin
      Edit1.Text := Simplified2Traditional('简体变繁体');
      Edit2.Text := Traditional2Simplified(Edit1.Text);
    end;
      

  2.   

    To jackie168(花好月圓):
    你的跟我的一模一样啊,我的象你一样做的时候也是没问题啊,只不过是做成DLL后用在ASP上就不对啊。
      

  3.   

    晕倒,这还什么只支持2000来了。这个输出还需要将传递给客户端的html页定义一个charset。
      

  4.   

    <%@ CodePage=950 %>
    <meta http-equiv="Content-Type" content="text/html; charset=big5">
    Response.Charset="big5"
    我把这几个放在上面就是想跟你们说明,几种情况都一一试过了,结果一样,请求支援!
      

  5.   

    试试http://iemis.vicp.net/GB2BIG5.rar(为免担心中毒,请自行重新编译,支持API输出和COM输出)
    ASP当中只需要先注册GB2BIG5.DLL,然后在ASP当中按如下使用即可:
    ===================================
    Dim GB2BIG5Object
    set GB2BIG5Object=CreateObject("GB2BIG5.GB2BIG5")
    Response.Write GB2BIG5Object.GBtoBIG5(GBString) '输出BIG5 强行转换
    Response.Write GB2BIG5Object.BIG5toGB(BIG5String) '输出BIG5 强行转换
    Response.Write GB2BIG5Object.AutoBIG5(GBString/BIG5String) '输出BIG5码 根据字串先判定是否为GB2312码,是则执行BIG5toGB,否则直接输出。
    Response.Write GB2BIG5Object.AutoGB(BIG5String/GBString) '输出GB2312码 根据字串先判定是否为BIG5码,是则执行GBtoBIG5,否则直接输出。API输入函数同上,可用Dumpbin /exports DLLFileName 查看。
      

  6.   

    To  unsigned(僵哥) ;
    哈哈,大佬,太謝謝您了!通過你的提示我也明白了一些問題。
      

  7.   

    To  unsigned(僵哥) :
    我又有另外一个问题了,可以帮我解决吗?请看这里:
    http://community.csdn.net/Expert/topic/3753/3753771.xml?temp=9.023684E-02