I would recommend to use tiny urls instead of this link.
Definately a viable workaround, but I don't understand why InDesign is choosing to parse and change the hyperlinks.
I managed to solve the problem by creating them in InCopy instead. Same panels etc but InCopy didn't change any of the + signs.
@Tim – this is a well known bug in InDesign CS6 that persists in InDesign CC.
For the cause see my answer in #1:
I will repeat that here:
It seems that every URL that is filled in in the Hyperlink palette is encoded with something like encodeURI() (a global ExtendScript function):
string encodeURI (text: string)
Encodes a string after RFC2396.
Create an UTF-8 ASCII encoded version of this string. The string is converted into UTF-8. Every non-alphanumeric character is encoded as a percent escape character of the form %xx, where xx is the hex value of the character. After the conversion to UTF-8 encoding and escaping, it is guaranteed that the string does not contain characters codes greater than 127. The list of characters not to be encoded is -_.!~*'();/?:@&=+$,#. The method returns false on errors.
To get it back to a working URL we could decode it by "decodeURI()":
string decodeURI (uri: string)
Decodes a string created with encodeURI().