Citing https://docs.puppet.com/puppet/latest/http_api/http_catalog.html#parameters:
facts: serialized pson of the facts hash. One odd note: due to a long-ago misunderstanding in the code, this is doubly-escaped (it should just be singly-escaped). To keep backward compatibility, the extraneous escaping is still used/supported.
The current code only single-escapes the facts hash. We need to break the code to double-escape it, or else literal + will be converted to spaces and in some cases % followed by 2 characters might get translated into a random character.
Note that this only affects Fetching catalogs from Puppet Master / PuppetServer
Citing https://docs.puppet.com/puppet/latest/http_api/http_catalog.html#parameters:
The current code only single-escapes the facts hash. We need to break the code to double-escape it, or else literal
+will be converted to spaces and in some cases%followed by 2 characters might get translated into a random character.Note that this only affects Fetching catalogs from Puppet Master / PuppetServer