truncate by character length instead of byte size, due to utf8 weirdness in different ruby versions @coryvirok