spiegel-keyman/common/windows/delphi/general
Marc Durdin 6eefb3a771 fix(developer): EncodeURL was not handling spaces
Fixes #7810.

This addresses a regression introduced in #7631, where URL parameters
with spaces would be encoded into `+` instead of `%20`. Looking a bit
deeper at the Delphi `TNetEncoding.URL.Encode` function I realised that
it was entirely inadequate. Some guy named Marc Durdin wrote a blog a
good few years ago about the problem, and that's what I ended up using.

This encoding issue caused filenames with spaces (by default, project
paths in Developer have spaces) to give a 404 when editing a touch
layout, which meant that the touch keyboards could not be saved.

Also fixes KEYMAN-DEVELOPER-74, where the + encoding caused multiple
entries to appear in the filename cache.

Amusing to Google this problem, find solid answer on SO, which pointed
to my very own blog. Embarrassing that my own code didn't already
include my own fix.

A secondary issue is also fixed here, where request parameters were
double-decoded for formencoded POST requests. The fix for broken URL
encodings was only required for GET requests.

This also showed up in KEYMAN-DEVELOPER-74, with double-encoded paths
being registered as source files.
2022-11-26 07:09:53 +07:00
..
BCP47Tag.pas chore(windows): move BCP47Tag.pas to common 2022-06-22 10:35:18 +10:00
CleartypeDrawCharacter.pas chore(windows): delete unused MLang.pas 2022-06-21 09:51:02 +10:00
CRC32.pas chore(windows): move CRC32.pas to common 2022-06-22 10:36:55 +10:00
DebugPaths.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
DUnitX.Loggers.TeamCity.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
findfonts.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
GetOsVersion.pas chore(windows): move GetOSVersion to common 2022-06-21 09:39:00 +10:00
GlobalProxySettings.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
Glossary.pas fix(developer): handle high-bit-set HKL correctly 2022-11-02 17:12:28 +11:00
httpuploader.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
httpuploader_messageprocessor_forms.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
JsonUtil.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
Keyman.System.AndroidStringToKeymanLocaleString.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
Keyman.System.CanonicalLanguageCodeUtils.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
Keyman.System.KeymanSentryClient.pas fix(windows): Improve shutdown robustness 2022-11-10 16:10:49 +11:00
Keyman.System.LanguageCodeUtils.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
Keyman.System.UpdateCheckResponse.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
KeymanPaths.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
KeymanVersion.pas chore(windows): move KeymanVersion.pas to common and update refs 2022-06-21 09:39:04 +10:00
keymanversion_build.in chore(windows): move KeymanVersion.pas to common and update refs 2022-06-21 09:39:04 +10:00
KeymanVersionInfo.inc chore(windows): move KeymanVersion.pas to common and update refs 2022-06-21 09:39:04 +10:00
KeyNames.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
klog.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
MSXMLDomCreate.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
RegistryKeys.pas chore(windows): move RegistryKeys.pas, ErrorControlledRegistry.pas, Glossary.pas, ScanCodeMap.pas to common 2022-06-21 09:39:03 +10:00
ScanCodeMap.pas chore(windows): move RegistryKeys.pas, ErrorControlledRegistry.pas, Glossary.pas, ScanCodeMap.pas to common 2022-06-21 09:39:03 +10:00
StockFileNames.pas chore(windows): fixup refs and move StockFileNames 2022-06-23 09:47:59 +10:00
TempFileManager.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
tip_icon_base.rc chore(windows): move utilicon.pas to common 2022-06-22 14:03:19 +10:00
tip_icon_base.res chore(windows): move utilicon.pas to common 2022-06-22 14:03:19 +10:00
ttinfo.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
Unicode.pas chore(windows): move Unicode.pas to common 2022-06-21 09:39:01 +10:00
Upload_Settings.pas chore: use keyman.com instead of keyman-staging.com 2022-09-08 14:32:39 +10:00
UserMessages.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
usp10.pas chore(windows): move usp10 to common 2022-06-21 09:38:59 +10:00
utildir.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
utilexecute.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
utilfiletypes.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
utilhttp.pas fix(developer): EncodeURL was not handling spaces 2022-11-26 07:09:53 +07:00
utilicon.pas chore(windows): move utilicon.pas to common 2022-06-22 14:03:19 +10:00
utilstr.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
utilsystem.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
utilxml.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
VersionInfo.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
VKeyChars.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
VKeys.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
wininet5.pas chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00