Safely raise errors when object contains unicode
This safely turns nd.array objects that contain unicode into a
representation that can be printed

Checklist for other PRs (remove this part if you are doing a PR for the pandas documentation sprint):

- [x] closes #20503
- [ ] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry
