@staopix, I think I've actually got it to work in my project. As a bit of background, I'm doing an ASP.NET MVC application. I started off by posting Sãu Paulo to a test URL and noticed it was replacing the ã with a ?. So this was a standard post, not Authorize.Net posting. Therefore I thought by default the URL was accepting standard ASCII characters only. In my MVC project I added the following to the web.config...
<location path="PATH_TO_URL">
<system.web>
<globalization requestEncoding="ISO-8859-1" responseEncoding="ISO-8859-1" />
</system.web>
</location>
The PATH_TO_URL is replaced with the URL to the Authorize.Net Relay Response URL without a leading forward slash.
At this point I saw the request was coming in correctly with Sãu Paulo. However the hash was not comparing properly still. This is because in the Authorize.Net example they are using ASCIIEncoding...
Dim HashedValue As Byte() = hmac.ComputeHash((New System.Text.ASCIIEncoding()).GetBytes(textToHash))
Changing this to UTF8Encoding seems to fix the issue...
Dim HashedValue As Byte() = hmac.ComputeHash((New System.Text.UTF8Encoding()).GetBytes(textToHash))
I can't help with other languages, but looking at my example I would say Authorize.Net are correctly posting to the relay response. Their ASCIIEncoding is wrong though.