What characters are you putting into the string that are not ASCII?  ASCII is basically a subset of UTF-8.  For any version we generate, this should make no difference.

Put another way, the bytes in the ASCII string `v0.9.1-1000-gabcde1` are exactly the same as the bytes in the UTF-8 string `v0.9.1-1000-gabcde1`.  They would need to have characters outside the range 0x20 - 0x7F to be different, because of how well designed UTF-8 is.

Did this actually fix it?  Also, I'm relatively sure you didn't test this code on non-Windows (e.g. Android), since Android does not have `WideCharToMultiByte()`.

-[Unknown]