i worked in sweden and had a lot of ‘fun’ with swedish special characters, i can tell you
ok, at first check in which encoding they come in the input xml, and just out of curiosity, try to do stringToBytes followed by bytesToString with the same encoding given.
You will see whether the resulting string will have the special characters intact or scrambled.
If they are ok, you know which encoding to use to convert them into the soapMessage.
Furthermore, sometimes direct converting from string to stream causes problems with special characters, as the IS built-in services use JVM default encoding (setup in the JVM config file), because they dont allow you to set the encoding yourself.
Try stringToStream and back streamToString to verify.
And this is what might be a problem, when building the soapMessage.
Secondly, try to capture the data as it is sent out from the IS to the web service with a tool like TcpTrace.
There you should be able to check the encoding and how the characters look like.
I once had to use a workaround and instead of sending the data as xml string and content type text/xml, I used content type quoted-printable or sent the data as base64 encoded.
Thirdly, if the data is sent out ok, then the receiving web service decoded them wrongly, which could be given with wrong encoding set for the content part or simply wrong encoding used in the flow.
As a last resort, you might have to write your own java services to convert string data from one encoding to another…
Hope this helps