The HTTP::payload command doesn' seem to ba able to handle UTF-8 encoded characters. When I capture the HTTP payload into a variable and then manipulate it and update the HTTP payload before sending the request into our application names any unicode characters are being mangled, so "Héro" becomes "HÃ©ro".
I've tried creating a simple HTTP virtual server with an iRule that just logs the HTTP payload in /var/log/ltm and I can see its not our application that is causing the issue, it appears to be the HTTP::payload feature.
I saw an article about using binary scan to fix a similar issue but when I tried it it didn't make any difference at all.
Help me f5'ers, you're my only hope!
Have you tried this?
"Note that the argument will be interpreted as a byte array. If it is actually a UTF-8 string with multibyte characters, the output will not be what you expect. In order to prepare a UTF-8 string for use as input to HTTP::payload replace, you should first run ‘binary scan c* throwawayvariable’."
This could also help: