用IDFTP上传中文文件名为问号的问题

k39k39 2016-09-05 02:52:59
环境XE6。
用IDFTP.put上传中文名文件。
因为FTP不支持UTF8,上传的文件名显示为问号。
将文件名转码GBK,但结果仍然是问号
后来注意到idftp.put的函数定义如下:
procedure Put(const ASource: TStream; const ADestFile: string;
const AAppend: Boolean = False; const AStartPos: TIdStreamSize = -1); overload;
procedure Put(const ASourceFile: string; const ADestFile: string = '';
const AAppend: Boolean = False; const AStartPos: TIdStreamSize = -1); overload;

文件名参数 ADestFile 是string,unicode字符串,所以在前面把文件名转码也没用。

请教该怎么解决。
...全文
1000 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
k39k39 2016-09-05
  • 打赏
  • 举报
回复
设置了 ftp.IOHandler.DefStringEncoding:=IndyTextEncoding_ASCII; 也没效果
k39k39 2016-09-05
  • 打赏
  • 举报
回复
试过了 ,idftp.put的参数是 string类型,转为WIDESTRING没有用处
lyhoo163 2016-09-05
  • 打赏
  • 举报
回复
要用WideString;
打开链接下载源码: https://pan.quark.cn/s/589796089f72 C++课程设计任务列表,涵盖以下内容:1、识别并显示10至99范围内,各位数乘积超过各位数和的数值,例如数字12不满足条件,因为1乘以2小于1加2,故不输出;而数字27满足条件,因为2乘以7大于2加7,因此需要输出该数。2、开发一个功能,用于从用户输入的任意数量实数中找出最大值与最小值:首先要求用户输入一个正整数n,代表数值的个数,随后用户可输入任意n个实数,程序需找出这n个数中的最大值和最小值并将它们展示出来。3、实现两个已排序数组的合并操作:设有数组A和B,且假设这两个数组的元素均已按照降序排列。编写程序将A和B合并成一个新的数组C,并确保C中的元素同样保持降序排列。int A[10]={123, 86,80, 49,33,15,7,0,-1,-3};int B[10]={100,64,51,50,27,19,15,12,5,2};4、设计一个函数,用于计算特定分数序列前n项的总和,该序列为1/2,1/3,1/4,1/5,1/6,1/7,...。要求在主程序中提示用户输入一个整数n,并验证输入的合法性(n需大于1方为有效),若输入合法,则调用求和函数并显示计算结果。5、编写一个程序,计算两个用户输入日期之间的天数差:用户需以year1,month1,day1和year2,month2,day2的格式输入两个日期,程序随后计算这两个日期之间的天数间隔,并将结果输出到屏幕上。要求编制具有如下原型的函数difs2Date:long GetDayDifference(int y1,int m1,int d1,int y2,int m2,int d2);并在主函数中调用此函数,将计...

5,943

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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