`stringByReplacingPercentEscapesUsingEncoding:` can return nil, so return an empty string if it returns nil