在我的 FireMonkey 应用程序中,我只需将
System.NetEncoding
单元添加到我的使用列表中,然后使用 TNetEncoding.URL.Encode()
和 TNetEncoding.URL.Decode()
功能,但 System.NetEncoding
在 TMS WEB Core 中不可用。
我也尝试过
IdURI
和 HTTPApp
单位,但它们也不可用。
TMS WEB Core 中是否有用于编码和解码 URL 的 TMS 单元?
Delphi 在处理 Url 编码方面有着悠久的历史:
然后Windows本身有一系列功能可供选择:
#
或 ?
PARSE_CANONICALIZE
和 URL_ESCAPE_UNSAFE
如果您的 FireMoney 应用程序未在 Windows 上运行,那么您可能不得不简单地放弃并推出自己的应用程序。
请注意,很多实现会说 URL 中唯一有效的字符是:
`A`..`Z`, `a`..`z`, `0`..`9`, `-`, `_`, `~`, `.`
并逃避其他任何事情。实际上,以下是有效且允许的 URL:
http://example.com/:@-.!$&'(),=;:@-._~!$&'()*,=:@-.!$&'(),==?/?:@-._~!$'()*,;=/?:@-._~!$'()*,;==#/?:@-._~!$&'()*,;=
\__/ \_________/\________________________________________/\__________________________________/\_________________/
| | | | |
Scheme Host Path Query Fragment
每个不同的部分对于允许的内容都有不同的规则。
部分 | 价值 |
---|---|
方案 |
|
用户名 | |
密码 | |
主持人 |
|
港口 |
|
路径 |
|
查询 |
|
碎片 |
|
更重要的是,根据您的用例,也许您想要对整个字符串进行urlencode:
http://stackoverflow.com/
http%3A%2F%2Fstackoverflow.com%2F
也许在现实中你只想让它转义“坏”网址:
https://stackoverflow.com/terms of service
https://stackoverflow.com/terms%20of%20service
tl;dr:尝试使用 Windows。