Support non-ascii characters in a provider name

* Use repr() to show unicode values
* Encode URIs out.
* Encode paths out.

[Closes #4592]