After some trial, error, another forum and plenty of google I found a solution. Wrap a decodeURI around the str variable.
var str1 = $(this).serialize();
var str = decodeURI(str1);
That fixes up the URI string that jQuery parses on to the post data