|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
mllxt (番茄≯炒蛋) |
★☆☆☆☆ |
-
|
普通会员 |
|
2013/9/24 1:29:07 |
标题: |
XE5 Android WebService方式获取数据在客户端中文显示乱码解决的猜测资料。 |
浏览:1728 |
|
加入我的收藏 |
楼主: |
刚百度WebService相关资料的时候看到这样一篇资料:http://www.360doc.com/content/12/1108/23/6879026_246713553.shtml 刚好是解决WIN32里提到中文乱码的解决方法,不知道可行否,各位安装好XE5的朋友如果正好有这方面需要麻烦测试一下并告知一声。
----------------------------------------------
- |
作者: |
wsswyz (wsswyz) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2013/9/24 4:32:37 |
1楼: |
依然是乱码!!还请高手解决!! function GetIAdroidServices(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IAdroidServices; const defWSDL = 'http://localhost:8080/wsdl/IAdroidServices'; defURL = 'http://localhost:8080/soap/IAdroidServices'; defSvc = 'IAdroidServicesservice'; defPrt = 'IAdroidServicesPort'; var RIO: THTTPRIO; begin Result := nil; if (Addr = '') then begin if UseWSDL then Addr := defWSDL else Addr := defURL; end; if HTTPRIO = nil then RIO := THTTPRIO.Create(nil) else RIO := HTTPRIO; RIO.HTTPWebNode.UseUTF8InHeader:=true;//添加这句解决中文乱码 try //出处http://www.360doc.com/content/12/1108/23/6879026_246713553.shtml Result := (RIO as IAdroidServices); if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr; finally if (Result = nil) and (HTTPRIO = nil) then RIO.Free; end; end; //一下调用代码 procedure TForm1.button1Click(Sender: TObject); var ws:IAdroidServices; s,sq:string; begin sq:='select sn,name,password from sys_user'; //sq:=''; ws:=GetIAdroidServices(true,'http://192.168.1.208:8080/wsdl/IAdroidServices',nil); //参数中可以使用配置的url s:=ws.GetEmployee_mi(sq); showmessage(s); // s:='<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <DATAPACKET Version="2.0"><METADATA><FIELDS><FIELD attrname="sn" fieldtype="string" WIDTH="20">'; // s:='<?xml version="1.0" standalone="yes"?> <DATAPACKET Version="2.0"><METADATA><FIELDS><FIELD attrname="sn" fieldtype="string" WIDTH="20">'; // s:=s+'<PARAM Name="ORIGIN" Value="sn" Roundtrip="True"/></FIELD><FIELD attrname="name" fieldtype="string" WIDTH="40"><PARAM Name="ORIGIN" Value="name" Roundtrip="True"/>'; // s:=s+'</FIELD><FIELD attrname="password" fieldtype="string" WIDTH="50"><PARAM Name="ORIGIN" Value="password" Roundtrip="True"/></FIELD></FIELDS><PARAMS/></METADATA><ROWDATA>'; // s:=s+'<ROW sn="888888" name="----" password="060000000000152AE77DFA3F47FEF42B5F169BD006A9"/><ROW sn="1202" name="田测" password="BD006A9"/></ROWDATA></DATAPACKET>';
if length(s)<>0 then clientdataset1.XMLData :=s; end;
----------------------------------------------
-
|
作者: |
xjia (xjia) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2013/9/24 8:03:29 |
2楼: |
中文内容必须是UTF8编码的,否则就是乱码
----------------------------------------------
-
|
作者: |
|
2013/9/24 17:07:23 |
3楼: |
服务器是UTF-8编码,你用ansi编码当然会乱码 总之,客户端的编码格式要与服务端的一致.
----------------------------------------------
|
作者: |
wsswyz (wsswyz) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2013/9/24 22:40:13 |
4楼: |
ding
----------------------------------------------
-
|
作者: |
|
2013/9/24 22:52:03 |
5楼: |
和数据库相关字段的属性或编码是不是有关系?
----------------------------------------------
-
|
作者: |
mllxt (番茄≯炒蛋) |
★☆☆☆☆ |
-
|
普通会员 |
|
2013/9/25 23:43:13 |
6楼: |
借用xj307兄弟的答案:
已解决,还是连接参数问题,需要将 FDConnectio 连接参数中的 StringFormat 设为unicode
----------------------------------------------
-
|
作者: |
wsswyz (wsswyz) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2013/9/27 10:39:28 |
7楼: |
怎么没找到楼上说的参数属性呢?请赐教!
----------------------------------------------
-
|
作者: |
|
2013/9/27 14:04:58 |
8楼: |
他是SQL LITE数据库,我的MSSQL没有那个参数
----------------------------------------------
I Love Delphi
|
作者: |
|
2013/9/29 8:42:58 |
9楼: |
mark
----------------------------------------------
-
|
|