怎么进行url的解码和编码啊

lshfong 2010-10-30 09:01:32
如这种格式%E4%BD%A0%E5%A5%BD
中文的时候先编码再接收的时候再解码,bcb中怎么处理
...全文
551 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
lshfong 2010-11-01
  • 打赏
  • 举报
回复
我用的2010,ide经常自己死掉
bigfog 2010-11-01
  • 打赏
  • 举报
回复
TIdURI::URLDecode(0,"...") 这样运行时就出错
ccrun.com 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lshfong 的回复:]
妖哥,不行啊,解码不能出来,我对比了一下编码出来的结果都是不一样的,解码所以没有成功
[/Quote]

我用的XE,编码和解码都没问题。
你自己用UTF8ToString或StringToUTF8再转换一下编码试试吧。
dhua_fj 2010-10-31
  • 打赏
  • 举报
回复
用UTF8Decode(TIdURI::URLDecode("%E4%BD%A0%E5%A5%BD"))解码
UTF8Decode函数bcb6系统本身就带有的
dhua_fj 2010-10-31
  • 打赏
  • 举报
回复
控件都是PAS编写的,不是完全兼容BCB
加个0参数就好了,不影响使用
TIdURI::URLDecode(0,"...")
bigfog 2010-10-31
  • 打赏
  • 举报
回复
奇怪,2007帮助里的定义为:
class function URLDecode(
ASrc: string
): string;


[BCC32 Error] Unit1.cpp(22): E2193 Too few parameters in call to '_fastcall TIdURI::URLEncode(TMetaClass *,const AnsiString)'

怎么多了一个参数 TMetaClass * 怎么处理啊
ccrun.com 2010-10-30
  • 打赏
  • 举报
回复
1. 你用C++Builder哪个版本?
2. 确定一下是ANSI编码还是UTF8编码。
lshfong 2010-10-30
  • 打赏
  • 举报
回复
解码解不出来,怎么回事啊
用表单向IdHTTPServer发出post请求,其中的name是中文‘哥’,页面上显示出的是输出是%E5%93%A5,用URLDecode(“%E5%93%A5”)解码解不出来,还是乱码,难道这个不是URL编码的吗?
ccrun.com 2010-10-30
  • 打赏
  • 举报
回复
2009以后的版本中:
#include <IdURI.hpp>

#pragma link "IndySystem.lib"

void __fastcall TForm1::Button1Click(TObject *Sender)
{
String strText = "中文测试";
String strEncode = TIdURI::PathEncode(strText);

ShowMessage(strEncode);
ShowMessage(TIdURI::URLDecode(strEncode));
}
lshfong 2010-10-30
  • 打赏
  • 举报
回复
怎么样连接哪个文件呢
lshfong 2010-10-30
  • 打赏
  • 举报
回复
妖哥和特哥出马了哇,兄弟好高兴哦
lshfong 2010-10-30
  • 打赏
  • 举报
回复
bcb版本2010,IdHTTPServer版本10

String strText = "你好";
String strEncode = TIdURI::PathEncode(strText);

ShowMessage(strEncode);
ShowMessage(TIdURI::URLDecode(strEncode));
============================执行结果
原文:你好
编码:%E4%BD%A0%E5%A5%BD
解码:浣犲ソ
ccrun.com 2010-10-30
  • 打赏
  • 举报
回复
以上代码在C++Builder6中使用。如果是在2009或更高版本中,需要链接另外的lib文件。
ccrun.com 2010-10-30
  • 打赏
  • 举报
回复
#include <IdGlobal.hpp>

#pragma link "indy.lib"

void __fastcall TForm1::Button1Click(TObject *Sender)
{
String strText = "中文测试";
String strEncode = URLEncode(strText);

ShowMessage(strEncode);
ShowMessage(URLDecode(strEncode));
}
lshfong 2010-10-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ccrun 的回复:]
2009以后的版本中:

C/C++ code
#include <IdURI.hpp>

#pragma link "IndySystem.lib"

void __fastcall TForm1::Button1Click(TObject *Sender)
{
String strText = "中文测试";
String strEncode = TIdUR……
[/Quote]
妖哥,不行啊,解码不能出来,我对比了一下编码出来的结果都是不一样的,解码所以没有成功
laowang2 2010-10-30
  • 打赏
  • 举报
回复
AURLString = URLEncode(AString);
lshfong 2010-10-30
  • 打赏
  • 举报
回复
这两个函数要引用哪个文件呢
直接引用提示没有函数的错误
dhua_fj 2010-10-30
  • 打赏
  • 举报
回复
%E4%BD%A0%E5%A5%BD是url+utf8编码,
要用UTF8Decode(UrlDecode("%E4%BD%A0%E5%A5%BD"))解码
或者用Utf8ToUnicode+UrlDecode转成unicode
结果是:你好
lshfong 2010-10-30
  • 打赏
  • 举报
回复
编码是utff-8
版本是2010
get中的中文可以正常,就是post中的中文怎么也不能常显示
在IdHTTPServer1Connect中也设置了的

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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