When calling a worklfow with parameters in the URL, the parameters gets garbled if they contain ISO-encoded characters:
/idm/task/taskLauch.jsl?id=myWorkflow&op_param=P%E6dagog results in param=P\ufffddagog in the actual workflow.
I am using Glassfish and have tried changing parameters in domain.xml, web.xml and sun-app.xml but to no avail.
Can anyone point me in the right direction?
I am not sure what you are asking for. This appears to be the correct behaviour. The URL decoded value is Pædagog which is correctly converted to P\ufffddagog using ISO-8859-1. If you want to force it to use UTF-8 instead of the default encoding, you could try adding -Dfile.encoding=UTF-8
The problem is that it is NOT decoded as Pædagog. \ufffd is a replacement character (either shown as a square or a questionmark), i.e. it does not show the 'æ' character.
The link is generated in another application that then calls the IdM. As I understand it, the URL is ISO-8859-1 encoded and Glassfish and / or IdM uses UTF-8 to decode it which results in the incorrect decoding. I have tried D-file.encoding=ISO-8859-1 as well as requestEncoding in both web.xml and sun-web.xml.
Strange thing is that if I copy idm.war and deploys it on a Tomcat server (pointing to the same IdM backend database), it shows the characters correctly. But the customer wishes to stay on Glassfish, so I have to find a solution.
So my basic problem is that the URL parameter gets decoded in the wrong way, but I don't know how to change that.
I have not done this in a long time since I only use UTF-8 whenever possible. Using UTF-8 for URI encoding is also recommend by some RFC.
But AFAIK you have to change URI encoding and encoding of the parameters for Glassfish in two different places. I don't remember where but I just googled it and came up with this Wiki page for Glassfish: