diff --git a/changes/fix_unicode b/changes/fix_unicode
new file mode 100644
index 0000000000000000000000000000000000000000..b97c3939541597c26943d54e4628817c7f447032
--- /dev/null
+++ b/changes/fix_unicode
@@ -0,0 +1,3 @@
+  o Minor bugfixes:
+    - Make Tor build correctly again with -DUNICODE -D_UNICODE defined.
+      Bugfix on 0.2.2.16-alpha; fixes bug 6097.
diff --git a/src/common/util.c b/src/common/util.c
index dc8f8b79957fea7c78620f54f89b3ba03dcb2d22..28ecff3983fafec9ef867c17ce628bf3fbeaacd1 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -3381,7 +3381,7 @@ tor_spawn_background(const char *const filename, const char **argv,
   process_handle_t *process_handle;
   int status;
 
-  STARTUPINFO siStartInfo;
+  STARTUPINFOA siStartInfo;
   BOOL retval = FALSE;
 
   SECURITY_ATTRIBUTES saAttr;
@@ -3442,7 +3442,7 @@ tor_spawn_background(const char *const filename, const char **argv,
 
   /* Create the child process */
 
-  retval = CreateProcess(filename,      // module name
+  retval = CreateProcessA(filename,      // module name
                  joined_argv,   // command line
   /* TODO: should we set explicit security attributes? (#2046, comment 5) */
                  NULL,          // process security attributes
diff --git a/src/test/test.c b/src/test/test.c
index 4f19f36eab8fc1660ba203f9cdb0efdebaf7ec0f..89b4ced87c73bef6119d9aa5938840d9d55ebe87 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -91,7 +91,7 @@ setup_directory(void)
     char buf[MAX_PATH];
     const char *tmp = buf;
     /* If this fails, we're probably screwed anyway */
-    if (!GetTempPath(sizeof(buf),buf))
+    if (!GetTempPathA(sizeof(buf),buf))
       tmp = "c:\\windows\\temp";
     tor_snprintf(temp_dir, sizeof(temp_dir),
                  "%s\\tor_test_%d", tmp, (int)getpid());
diff --git a/src/test/test_util.c b/src/test/test_util.c
index 4b628ea54d1a2de7aac7cf0b0fdf2e0818b483db..7484b9e90f1d27266453c338455592a817376252 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -14,6 +14,10 @@
 #include "mempool.h"
 #include "memarea.h"
 
+#ifdef _WIN32
+#include <tchar.h>
+#endif
+
 static void
 test_util_time(void)
 {
@@ -2113,7 +2117,7 @@ test_util_parent_dir(void *ptr)
 static void
 test_util_load_win_lib(void *ptr)
 {
-  HANDLE h = load_windows_system_library("advapi32.dll");
+  HANDLE h = load_windows_system_library(_T("advapi32.dll"));
   (void) ptr;
 
   tt_assert(h);