打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
delphi XE7 HttpEncode 编码问题 urlencode

urlencode

ansicode


unicode

//总经理2级
//utf8
//\xE6\x80\xBB\xE7\xBB\x8F\xE7\x90\x86\x32\xE7\xBA\xA7
//urlencode
//%E6%80%BB%E7%BB%8F%E7%90%862%E7%BA%A7



delphi XE7 HttpEncode 编码问题

      近期在做网址编码相关的工作,发现在用 XE5 编译的时候,一切正常,拿 到 XE7下 就 结果错误了。百度了下,谷歌 了下,有人提出,但是,我没有找到答案,也许都没有碰到这个问题,也许都己经自己默默的解决了,在此 小记一下,方便后人,也方便自己 查寻。

例子 : 原字符   "过年"

httpencode('过年') 结果 :

XE5为  %B9%FD%C4%EA

XE7 调用 相当函数结果 %E8%BF%87%E5%B9%B4 

百思不得其解啊,折腾了很长时间,后来终于想到是不是 此函数 官方更新修改了,(没办法,人比较笨)

于是查看源码:

XE5的 web.httpapp 中(分string 和 ansistring, 我用ansistring 版本得到 期望的结果):

View Code

在XE7中

web.httpapp:

function HTTPEncode(const AStr: string): string;begin  Result := TNetEncoding.URL.Encode(AStr);end;

查看 system.netencoding

找到 

function TNetEncoding.DoEncode(const Input: array of Byte): TBytes;begin  Result := TEncoding.UTF8.GetBytes(DoEncode(TEncoding.UTF8.GetString(@Input[0])));end;
查看类定义:  
TURLEncoding = class(TNetEncoding) protected function DoDecode(const Input: string): string; overload; override; function DoEncode(const Input: string): string; overload; override; end;
查看函数代码:
View Code

似乎有点不同。

目前是我自己建立一个函数 ,复制XE5版本的 代码 放在XE7里面调用,得到希望的结果的。

代码:

View Code

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Delphi XE 10.2.3使用CEF4Delphi取网页元素时碰到 变问号?的处理
delphi 最快速编码 URLDecode URLEncode
java中文乱码解决总结
UrlEncode编码 unity c#
页面跳转乱码解决之道
URLEncoder.encode 和 URLDecoder.decode 处理url的特殊参数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服