### Summary

Add preflight checks to `lib/ansible/cli/__init__.py` for both the local locale and the fsencoding to ensure they are `UTF-8`, and abort when they are not.

We implicitly require this now, but have never strictly enforced it. Due to using `pathlib` in more places, to avoid undefined behavior in our codebase, due to the utf-8 expectation, check this early and fail fast.

### Issue Type

Feature Idea

### Component Name
```
lib/ansible/cli/__init__.py
```
### Additional Information

We may also need to evaluate the `C` locale.  I know some users are running ansible from devices with only the `C` locale.

### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
result = None
            self.warning("Not prompting as we are not in interactive mode")
        
        if not result and default is not None:
            result = default
        if encrypt:
            
            from ansible.utils.encrypt import do_encrypt
            result = do_encrypt(result, encrypt, salt_size, salt)
        
        result = to_text(result, errors='surrogate_or_strict')
        if unsafe:
            result = wrap_var(result)
        return result
    @staticmethod
    def _output_encoding(stderr=False):
        encoding = locale.getpreferredencoding()
        
        
        
        if encoding in ('mac-roman',):
            encoding = 'utf-8'
        return encoding
    def _set_column_width(self):
        if os.isatty(1):
            tty_size = unpack('HHHH', fcntl.ioctl(1, TIOCGWINSZ, pack('HHHH', 0, 0, 0, 0)))[1]
        else:
            tty_size = 0
        self.columns = max(79, tty_size - 1)