Here is my solution to the encoding issues, let me know if it works for you (assuming your environment let you access the body of the request without parsing it, or already knows how to parse it correctly).
http://blog.cyberion.net/2014/08/parsing-paypal-ipn-requests...