This is a
It's not a problem, contrary to what
romainl says in a comment to the question, with
cmd at all. It's nothing to do with
cmd in fact. Both
start are behaving as designed.
The problem is that
vim is using UTF-8 (See
:help unicode.) for storing and manipulating the command string, and is passing that UTF-8 string as-is to a programming API that doesn't accept UTF-8 in the first place. Specifically: It ends up passing the UTF-8 string to the
CreateProcessA() function. But
CreateProcessA() takes strings encoded in the Windows code page.
vim should convert the string beforehand from UTF-8 to the appropriate code page (or to Unicode and call
CreateProcessW() instead). But it doesn't.
As a consequence, the sequence of bytes in your UTF-8 pathname, as constructed by
%:p:h, is being treated by
CreateProcessA() as if it were a sequence of bytes in the Windows code page. You can see the result.
There's probably no local fix for this. Using 8.3 names (
:8) won't fix this at all. But fiddling with
encoding variable might ameliorate it to an extent (although it will affect more than just this, and isn't the correct way to address the problem). You'll have to talk to Bram Moolenaar. (Consulting the
vim 7.3 bug list, I find that you can also talk to this person, although convincing M. Moolenaar that kikuchan is not alone is still a good idea.)