Yeah I see your point, how about something like “string_to_utf8”? Here are some new ideas for the naming my new string conversion functions. I should probably incorporate the descriptions into comments as well.

* string_path_canonicalize → string_to_canonical_path: Encodes a Python string to null terminated UTF-8 and converts it to canonical path form. The result is always allocated in the APR pool or statically, even if the path was originally in canonical form.
* string_dict_to_hash (keep name): Builds a hash based on Python dictionary key and value strings encoded to UTF-8, all allocated in the APR pool
* string_pstrdup → string_to_utf8: Encodes a Python string to null terminated UTF-8, allocated in the APR pool
* string_pmemdup → string_to_utf8_and_size: Encodes a Python string to UTF-8, allocated in the APR pool. Returns full length of original string, but also appends a null terminator to the buffer.
* py_to_svn_string (keep name): Encodes a Python string to UTF-8, allocated in the APR pool as an svn_string_t type