`stringByReplacingPercentEscapesUsingEncoding:` can return nil

so return an empty string if it returns nil

this is causing lots of crashes in production for us.