why run `data_size = str->Utf8Length()`, just to check for ascii and run it again?