The problem is that you still need to deal with unicode attacks, sql attacks, js attacks, css attacks, regex attacks, etc. There's nothing 'arbitrary' about sanitizing any user-inputted text field, and it's especially difficult to do so a culturally sensitive way.
It's a good problem you're solving though. It's a great job interview question to have people write some code and talk through, since to get someone's first name given their full name it takes maybe 20 minutes to write something that works 99% of the time, but then to write something that works 99.99% of the time it takes maybe 20 years.