数据库的增、删、修改都没问题,可是处理中文全成乱码!!!
谁有什么解决方法吗?分不够可以加哦
谁有什么解决方法吗?分不够可以加哦
解决方案 »
- 求助:C/S程序使用ADO远程连接,几分钟不操作客户端程序会断开跟远程数据库的连接
- 怎样杀掉一个进程,急求多种方法!!!
- DataSet的AfterOpen事件(好像是关于AfterOpen事件问题的第一问^_^)
- 对 ADo+SQL2000 编程熟悉的 请进
- 紧急!请推荐一款内存泄漏检测工具,谢谢了!
- 关于地址。。
- 如何调整bmp图形亮度,答得好的有50分
- 急高分求汉字字库编码,delphi环境下的。
- 有关ListBox的一个问题
- QuickRep有时能找到打印机,但不能打印,Why? 急急!!!
- delphi 6中的类DesignIntf,DesignWindows,DesignEditors问题?
- 怎么在FORM里面画一条横线,好像IE上面的那几条一样?
因为我要知道了你的实现方法我才能答你。我们的实现方法比较特别。
conf/httpd.conf文件,查找
AddDefaultCharset ISO-8859-1
改成
#AddDefaultCharset ISO-8859-1
AddDefaultCharset GB2312修改完成后重新启动Apache,如果不行,请重新启动系统。
在conf/httpd.conf文件,没有查找到AddDefaultCharset ISO-8859-1
自己添加了AddDefaultCharset GB2312
可是还是不行
./configure --with-layout=Apache --enable-module=so --enable-shared=max --enable-rule=SHARED_CORE
是否少了什么东西?
问一下你:你能否(懂否)调用在 Application server (Web service)写的方法?
这要用到客户端调用应用服务器的方法,要传SQL过去在Linux下运行,当然SQL是经过处理的。直接用TClientDataSet.Execute是不行的。
--------------------------------------------------
Application server:function TfssdmHighway.DecodeSQL(SQL: string): string;
begin
Result := '';
while SQL <> '' do
begin
try
Result := Result + Chr(StrToInt(Copy(SQL, 1, 3)));
except
end;
System.Delete(SQL, 1, 3);
end;
end;function TfssdmHighway.ExecSQLs(const vSQLs: TStringDynArray; Encoded: Boolean): Boolean;
var
I: Integer;
aTD: TTransactionDesc;
sqUpdate: TSQLQuery;
begin
sqUpdate := TSQLQuery.Create(Self);
try
sqUpdate.SQLConnection := SQLCHighway;
aTD.TransactionID := 1;
SQLCHighway.StartTransaction(aTD);
try
for I := Low(vSQLs) to High(vSQLs) do
begin
if vSQLs[I] = '' then
Continue;
sqUpdate.Close;
sqUpdate.SQL.Text := vSQLs[I];
if Encoded then
sqUpdate.SQL.Text := DecodeSQL(sqUpdate.SQL.Text);
sqUpdate.ExecSQL(True);
end;
SQLCHighway.Commit(aTD);
Result := True;
except
on E: Exception do
begin
SQLCHighway.Rollback(aTD);
WriteLog(FormatDateTime('yyyy.mm.dd HH:MM:SS '#13#10, Now) +
sqUpdate.SQL.Text + #13#10 + E.Message);
Result := False;
end;
end;
finally
FreeAndNil(sqUpdate);
end;
end;
--------------------------------------------------
--------------------------------------------------
Client:function EncodeSQL(SQL: string): string;
var
I: Integer;
begin
Result := '';
SQL := AnsiString(SQL);
for I := 1 to Length(SQL) do
Result := Result + FormatFloat('000', Ord(SQL[I]));
end;
function SQLsExecute(SQLs: array of string; Encoded: Boolean = False): Boolean;
var
SQLsToServer: TStringDynArray;
I, iLow: Integer;
begin
SetLength(SQLsToServer, High(SQLs) - Low(SQLs) + 1);
iLow := Low(SQLsToServer);
for I := Low(SQLs) to High(SQLs) do
begin
SQLsToServer[iLow] := SQLs[I];
if Encoded then
SQLsToServer[iLow] := EncodeSQL(SQLsToServer[iLow]);
Inc(iLow);
end;
Result := GetIssdmHighway(False, GetURL).ExecSQLs(SQLsToServer, Encoded);
end;--------------------------------------------------含中文的SQL执行问题解决!!
其实用TIdBase64Encoder,TIdBase64Decoder我想也可以达到同样的效果。
网上有篇文章http://www-900.ibm.com/developerWorks/cn/webservices/ws-ejbacess/index.shtml#1
其中提到:
Delphi Web Service中文问题
通过监控SOAP调用的全过程我们发现Delphi向Web Server提出HTTP请求的时候,数据是以UTF-8编码通过POST方式提交给Web服务器的,但是另一方面,Delphi在HTTP请求头中设置Content-Type为text/xml,造成Apache SOAP Toolkit认为POST方式的数据是iso8859-1编码,出现了所谓中文问题。
我们可以设置Delphi在提出HTTP请求的时候设置Content-Type为text/xml; charset= UTF-8。具体做法是在创建了 THTTPRio对象之后设置它的属性UseUTF8InHeader
X.HTTPWebNode.UseUTF8InHeader := true ;
需要注意SoapHTTPTrans.pas代码 header := 'text/xml charset=UTF-8'; 当中少了一个分号";",这造成服务器认为soap 客户程序POST上来的数据是iso8859-1编码。
在Delphi选择Project > Add to Project,加入Delphi6\Source\Soap\SoapHTTPTrans.pas。修改该行代码为:header := 'text/xml; charset=UTF-8';可是,我还是没有解决乱码问题,不知哪位大侠能指点一二!!!
其实用TIdBase64Encoder,TIdBase64Decoder我想也可以达到同样的效果。
网上有篇文章http://www-900.ibm.com/developerWorks/cn/webservices/ws-ejbacess/index.shtml#1
其中提到:
Delphi Web Service中文问题
通过监控SOAP调用的全过程我们发现Delphi向Web Server提出HTTP请求的时候,数据是以UTF-8编码通过POST方式提交给Web服务器的,但是另一方面,Delphi在HTTP请求头中设置Content-Type为text/xml,造成Apache SOAP Toolkit认为POST方式的数据是iso8859-1编码,出现了所谓中文问题。
我们可以设置Delphi在提出HTTP请求的时候设置Content-Type为text/xml; charset= UTF-8。具体做法是在创建了 THTTPRio对象之后设置它的属性UseUTF8InHeader
X.HTTPWebNode.UseUTF8InHeader := true ;
需要注意SoapHTTPTrans.pas代码 header := 'text/xml charset=UTF-8'; 当中少了一个分号";",这造成服务器认为soap 客户程序POST上来的数据是iso8859-1编码。
在Delphi选择Project > Add to Project,加入Delphi6\Source\Soap\SoapHTTPTrans.pas。修改该行代码为:header := 'text/xml; charset=UTF-8';可是,我还是没有解决乱码问题,不知哪位大侠能指点一二!!!