Join chars

caching: convinced myself we only need to normalize one way, however, that always seems to be wrong at this point...

Also for replace all, thought it could also just be a regex... thoughts?