我根据网上的代码写了一个简体转繁体的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>页面返回结果如下:
笢貌I
组件代码如下(节选):
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>页面返回结果如下:
笢貌I
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;
你的跟我的一模一样啊,我的象你一样做的时候也是没问题啊,只不过是做成DLL后用在ASP上就不对啊。
<meta http-equiv="Content-Type" content="text/html; charset=big5">
Response.Charset="big5"
我把这几个放在上面就是想跟你们说明,几种情况都一一试过了,结果一样,请求支援!
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 查看。
哈哈,大佬,太謝謝您了!通過你的提示我也明白了一些問題。
我又有另外一个问题了,可以帮我解决吗?请看这里:
http://community.csdn.net/Expert/topic/3753/3753771.xml?temp=9.023684E-02