气死我了,XE8的IDHttp的Post返回始终是乱码

cococcxx 2015-07-18 11:36:30
困了一周了,用尽了网上可以搜到的办法,通通都试过了,原来在D7上用的,一切正常,到了XE8上死活不行,返回的中文都是“??????????????????0????????1?????2????”这样的,谁可以帮帮我!!
...全文
4524 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen_shu_jie 2017-09-03
  • 打赏
  • 举报
回复
之前也找了很多方法,中文用AnsiString,WideString转都不行。 后来测试: delphi7 中中文用 UTF8Encode(inValue); java中用URLDecoder.decode(inValue, "utf-8"); 可以
lyhoo163 2017-09-03
  • 打赏
  • 举报
回复
lyhoo163 2017-03-10
  • 打赏
  • 举报
回复
这么说,应该是传回的数据类型是流了。
Yothan 2017-03-09
  • 打赏
  • 举报
回复
引用 7 楼 ksrsoft 的回复:
procedure TForm1.Button1Click(Sender: TObject);
var
  T: TStringStream;
  ts: TStringList;
  SvrUrl, postUrl: string;

begin
  SvrUrl := 'http://app.25hours.cc:6077/webservice/25hours.asmx/StruUp';
  postUrl := '';
  ts := TStringList.Create;
  ts.Text := 'data={"ShopID":1,"SyncVer":200}';

  T := TStringStream.Create('', tencoding.UTF8);
  IdHTTP1.Post(SvrUrl + postUrl, ts, T);
  Memo1.Text := T.DataString;
end;
经过测试,没有乱码 {"error":0,"msg":"表结构升级获取成功!","Count":247,"Stru":[{"ID":201,"SqlStr":"CASE"},{"ID":202,".......
亲测有用!
wxfame 2016-09-19
  • 打赏
  • 举报
回复
找到解决方法了,使用tstringstream作为返回类型,部分代码参考:
responsejson: tstringstream; 
responsejson := tstringstream.Create('', 65001); 
http.post(URL ,StringList , responsejson);    
Memo1.Lines.Add(responsejson.DataString);
responsejson.DataString里面的中文不是乱码了! 解决方法参考自http://blog.sina.com.cn/s/blog_549f50ec01019cgc.html。
GoingMerry 2015-08-27
  • 打赏
  • 举报
回复
按照7楼说 会不会是楼主的XE8的项目设置有什么需要更改的? 我也遇到相同问题了 请大神解答 另外 楼主有什么进展么?
doloopcn 2015-07-21
  • 打赏
  • 举报
回复
引用: IdURI; 使用: TidURI.URLDecode(MyHttp.Get(TIdURI.URLEncode(uploadstr)));
lyhoo163 2015-07-21
  • 打赏
  • 举报
回复
别外汉字输入法的故障,也会出现类似的问题。
lyhoo163 2015-07-21
  • 打赏
  • 举报
回复
按照7楼所说,没有乱码的话。问题可能出在你的操作系统上。请换台机子,或重装 系统试试。
缘中人 2015-07-20
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
  T: TStringStream;
  ts: TStringList;
  SvrUrl, postUrl: string;

begin
  SvrUrl := 'http://app.25hours.cc:6077/webservice/25hours.asmx/StruUp';
  postUrl := '';
  ts := TStringList.Create;
  ts.Text := 'data={"ShopID":1,"SyncVer":200}';

  T := TStringStream.Create('', tencoding.UTF8);
  IdHTTP1.Post(SvrUrl + postUrl, ts, T);
  Memo1.Text := T.DataString;
end;
经过测试,没有乱码 {"error":0,"msg":"表结构升级获取成功!","Count":247,"Stru":[{"ID":201,"SqlStr":"CASE"},{"ID":202,".......
cococcxx 2015-07-19
  • 打赏
  • 举报
回复
http://app.25hours.cc:6077/webservice/25hours.asmx/StruUp Post:data={"ShopID":1,"SyncVer":200} 我自己的服务器
缘中人 2015-07-19
  • 打赏
  • 举报
回复
url能否发上来
cococcxx 2015-07-19
  • 打赏
  • 举报
回复
    t:=TStringStream.Create('',tencoding.UTF8);
    idhttp1.Post(SvrUrl+postUrl,ts,t);
    Result:=Utf8ToAnsi(t.DataString);或Result:=Utf8Decode(t.DataString);
或者
    t:=TStringStream.Create('',tencoding.ANSI);
    idhttp1.Post(SvrUrl+postUrl,ts,t);
    Result:=t.DataString;
都不行, 确定网站返回的是UTF8的,在Delphi7下也是用IDHttp返回是正常的
cococcxx 2015-07-19
  • 打赏
  • 举报
回复
用过UTF8Decode,UTF8ToAnsi,还有
gobiz 2015-07-19
  • 打赏
  • 举报
回复
用UT8Decode解码试试呢?
缘中人 2015-07-19
  • 打赏
  • 举报
回复
xe8下代码怎么写的

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧