<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
As of Ansible 2.9, the Ansible CLI commands crashe when the ansible project directory contains some non-ASCII characters. In my case it contains a `é`, a quite common character in french.

I get this error:

> ERROR! Unexpected Exception, this is probably a bug: 'ascii' codec can't decode byte 0xc3 in position 31: ordinal not in range(128)
> to see the full traceback, use -vvv

With `---v`, I get that:

> ERROR! Unexpected Exception, this is probably a bug: 'ascii' codec can't decode byte 0xc3 in position 31: ordinal not in range(128)
> the full traceback was:
> 
> Traceback (most recent call last):
>   File "/usr/bin/ansible-playbook", line 123, in <module>
>     exit_code = cli.run()
>   File "/usr/lib/python2.7/dist-packages/ansible/cli/playbook.py", line 69, in run
>     super(PlaybookCLI, self).run()
>   File "/usr/lib/python2.7/dist-packages/ansible/cli/__init__.py", line 82, in run
>     display.vv(to_text(opt_help.version(self.parser.prog)))
>   File "/usr/lib/python2.7/dist-packages/ansible/cli/arguments/option_helpers.py", line 174, in version
>     result += "\n  config file = %s" % C.CONFIG_FILE
> UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 31: ordinal not in range(128)

If I remove this character from the directory path, it gets working.

Note that this also happens for other Ansible commands, such as `ansible --version`. It sounds like it happens as soon as the project configuration is read.

<!--- Explain the problem briefly below -->

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->

Ansible.

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```
ansible 2.9.3
  config file = /tmp/project/ansible.cfg
  configured module search path = [u'/home/username/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.17 (default, Nov  7 2019, 10:07:09) [GCC 7.4.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```
ANSIBLE_PIPELINING(/tmp/project/ansible.cfg) = True
DEFAULT_HOST_LIST(/tmp/project/ansible.cfg) = [u'/tmp/project/hosts']
DEFAULT_REMOTE_USER(/tmp/project/ansible.cfg) = username
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
Ubuntu 18.04. Ansible installed from the [Ansible PPA](https://launchpad.net/~ansible).

##### STEPS TO REPRODUCE
Create any ansible project in a directory containing a non-ASCII character.

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
Ansible should work and used to work until Ansible 2.9.
<!--- Describe what you expected to happen when running the steps above -->


##### ACTUAL RESULTS
Get the error reported above.
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->

<!--- Paste verbatim command output between quotes -->
```paste below

```

''' return a configuration variable with casting
    :arg value: The value to ensure correct typing of
    :kwarg value_type: The type of the value.  This can be any of the following strings:
        :boolean: sets the value to a True or False value
        :bool: Same as 'boolean'
        :integer: Sets the value to an integer or raises a ValueType error
        :int: Same as 'integer'
        :float: Sets the value to a float or raises a ValueType error
        :list: Treats the value as a comma separated list.  Split the value
            and return it as a python list.
        :none: Sets the value to None
        :path: Expands any environment variables and tilde's in the value.
        :tmppath: Create a unique temporary directory inside of the directory
            specified by value and return its path.
        :temppath: Same as 'tmppath'
        :tmp: Same as 'tmppath'
        :pathlist: Treat the value as a typical PATH string.  (On POSIX, this
            means colon separated strings.)  Split the value and then expand
            each part for environment variables and tildes.
        :pathspec: Treat the value as a PATH string. Expands any environment variables
            tildes's in the value.
        :str: Sets the value to string types.
        :string: Same as 'str'
    '''
    errmsg = ''
    basedir = None
    if origin and os.path.isabs(origin) and os.path.exists(to_bytes(origin)):
        basedir = origin