delphi2009(10,xe)下indy10发送utf8字符串
来源:互联网 发布:360浏览器mac官方下载 编辑:程序博客网 时间:2024/05/20 19:32
最近实现一个功能,使用delphi2009以TCP调用java端的接口,接口要求先发送字符串的长度,然后再发送字符串内容,并且字符串要求是utf8格式的
调试了好长时间,才终于发现解决办法,或者说发现问题所在
我用了utf8encode方法,然后调用一个函数,在这个函数中将字符串转换为tidbytes后发送(前面的数据是结构体),这个函数的参数类型是string类型的,结果总是不成功
后来注意到utf8encode的返回值是RawbyteString类型的,作为string参数传递时被转换回去了于是把utf8的转换放到里面,然后就正确了,代码如下
function SendCmd(sCmd: string): boolean;var r: ARecord; //自定义的结构体 I: Integer; sUtf8Cmd: RawbyteString; data: TIdBytes;begin sUtf8Cmd := UTF8Encode(sCmd); GetRecordData(@r, Length(sUtf8Cmd)); //自定义函数:初始化结构体 data := RawToBytes(r, SizeOf(r)); SetLength(data, SizeOf(r) + Length(sUtf8Cmd)); for I := 1 to Length(sUtf8Cmd) do data[SizeOf(r) + I - 1] := Ord(sUtf8Cmd[I]); TcpClient.IOHandler.Write(data); Result := True;end;//indy中的函数,有些版本没有procedure BytesToRaw(const AValue: TIdBytes; var VBuffer; const ASize: Integer);begin Assert(Length(AValue) >= ASize); Move(AValue[0], VBuffer, ASize);end;
- delphi2009(10,xe)下indy10发送utf8字符串
- Delphi2009的Bug:WinSocket元件接收和发送的编码不一致(在Delphi XE版本中已做修改)
- indy10发送网页
- Delphi2009下开发注意事项
- Delphi XE(Indy10)TIdBytes转AnsiString的实现
- Delphi XE(Indy10)TIdBytes转AnsiString的实现
- delphi2009(Lazarus)中indy10 的Idtcpserver收发中文的解决办法。
- delphi2009(Lazarus)中indy10 的Idtcpserver断开客户端连接报错问题的解决办法
- delphi工作笔记利用indy10发送邮件
- VS9(vs2008) 下 Debug 显示 UTF8 字符串
- VC++下处理UTF8编码的字符串
- VC++下处理UTF8编码的字符串
- VC++下处理UTF8编码的字符串
- 从发送UTF8编码字符串到理解Encoding及CharSet
- 关于DELPHI 2006 .NET 下 INDY10 问题.
- Delphi XE 的字符串理解
- idhttp发送utf8格式
- Delphi用Indy10实现smtp发送邮件支持附件
- [转贴+个人理解] 敏捷开发FAQ
- 修改系统默认屏幕显示方向横屏或竖屏
- Java中排序的实现(复习)
- 拓扑排序优化
- rails上传文件时,实现form表单自动提交
- delphi2009(10,xe)下indy10发送utf8字符串
- 深入讨论C++的enum
- C++程序运行时内存布局之----------简单类实例,成员变量,成员函数,静态成员变量,静态成员函数
- myeclipse创建maven工程报错解决
- 类之Prototype.js学
- DALSA Coreco - 图像处理软件(Sapera LT )
- 开源GIS:GeoServer和MapServer的对比
- lamp使用php处理上传文件,调用move_uploaded_file函数遇到目录写权限问题及解决过程
- Linux下查看文件和文件夹大小