DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: ahttp123
今日帖子: 22
在线用户: 17
导航: 论坛 -> 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编码的,否则就是乱码
----------------------------------------------
-
作者:
男 qiuyan81 (苦恋树) ★☆☆☆☆ -
普通会员
2013/9/24 17:07:23
3楼: 服务器是UTF-8编码,你用ansi编码当然会乱码
总之,客户端的编码格式要与服务端的一致.
----------------------------------------------
作者:
男 wsswyz (wsswyz) ★☆☆☆☆ -
盒子活跃会员
2013/9/24 22:40:13
4楼: ding
----------------------------------------------
-
作者:
男 cnhotel (cnhotel) ★☆☆☆☆ -
盒子活跃会员
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楼: 怎么没找到楼上说的参数属性呢?请赐教!
----------------------------------------------
-
作者:
男 marco_hsu (marco) ★☆☆☆☆ -
盒子活跃会员
2013/9/27 14:04:58
8楼: 他是SQL LITE数据库,我的MSSQL没有那个参数
----------------------------------------------
I Love Delphi
作者:
男 shileizi (sl) ★☆☆☆☆ -
普通会员
2013/9/29 8:42:58
9楼: mark
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行58.59375毫秒 RSS