Windows uses 16 bit wide characters to represent Unicode in the process environment. Convert UTF-8 to UCS-2 and use the wide character API to set environment variables.
Signed-off-by: Heiko Hund <heiko.h...@sophos.com> --- misc.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/misc.c b/misc.c index ad74357..ddd5fdf 100644 --- a/misc.c +++ b/misc.c @@ -1030,8 +1030,8 @@ setenv_str_ex (struct env_set *es, { #if defined(WIN32) { - /*msg (M_INFO, "SetEnvironmentVariable '%s' '%s'", name_tmp, val_tmp ? val_tmp : "NULL");*/ - if (!SetEnvironmentVariable (name_tmp, val_tmp)) + if (!SetEnvironmentVariableW (wide_string (name_tmp, &gc), + wide_string (val_tmp, &gc))) msg (M_WARN | M_ERRNO, "SetEnvironmentVariable failed, name='%s', value='%s'", name_tmp, val_tmp ? val_tmp : "NULL"); -- 1.7.5.4