注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

隐龙 为了一生的信念

今日默默沉于水,他日飞腾在九天...

 
 
 

日志

 
 

ICS THttpCli 中文编码问题(解决)  

2012-07-23 19:05:26|  分类: Delphi |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

报表控件做好了,按照惯例,试了一下中文字符,全是乱码,意料之中(经常有的事)。

发现这个问题,就开始着手解决,把ICS的功能看了个遍,没有找到可以设置字符编码的属性或方法,这时候头脑里第一想到的是这个组件的源码有问题(不应该没有设置字符编码的地方呀),开始仔细阅读源码,试着修改了一些地方,依然不对,服务器仍然看不到中文。

这个时候想,THttpCli 发送数据是通过流进行写入的,是不是应该在进行流操作之前就把字符进行一次编码?试了一下,果然,先对中文字符进行utf-8(服务器也是)编码,然后再发送,服务器就看到期待已久的中文字符了。至此终于明白了交互时编码的过程(我们的浏览器相对就比较智能,先取得服务器要求的编码,然后根据这个编码对数据编码后再进行发送),当然:ICS THttpCli 也可以的,不过需要二次开发。

代码:

procedure TForm3.Button1Click(Sender: TObject);
var
  dataout:TMemoryStream;
  data:string;
begin
  dataout:=TMemoryStream.Create;
  data:='a=中';
  data:=UTF8Encode(data);
  dataout.Write(data[1],Length(data));
  dataout.Seek(0,soBeginning);
  Self.HttpCli1.URL:='http://localhost:8080/FileStore/report.shtml?b='+UrlEncode(UTF8Encode('国'));
  self.HttpCli1.SendStream:=dataout;
  Self.HttpCli1.Post;
  dataout.Free;
end;

  评论这张
 
阅读(1219)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018