Apparently you can't use encode()/decode() for the "key" string in Property strings.
I happen to have been looking at the code for how string properties are parsed last week, so I know what is going on there.
The regular expression that parses string properties only allows alphanumerics on the key (left) side of the equal sign. The regular expression looks for 1 or more alphanumerics followed by the equal sign, and the value is then anything up to first semi-colon.
So in your example, the key portion of the expression will not match anything prior to the last % in the key, so the key is just what's left after the last percent sign. That's why the key is showing as 29.
The regular expression could be changed to allow the key to include additional non-alphanumeric characters that are used by the encoding process, as long as they do not include equals or semi-colons.