`stringByReplacingPercentEscapesUsingEncoding:` can return nil

so return an empty string if it returns nil