diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py
index d63dfa1..fc0e3a7 100644
--- a/Lib/test/test_cmd_line.py
+++ b/Lib/test/test_cmd_line.py
@@ -135,6 +135,12 @@
             self.exit_code('-c', 'pass'),
             0)
 
+        # Test handling of non-ascii data
+        command = "assert(ord('\xe9') == 0xe9)"
+        self.assertEqual(
+            self.exit_code('-c', command),
+            0)
+
 
 def test_main():
     test.support.run_unittest(CmdLineTest)
diff --git a/Misc/NEWS b/Misc/NEWS
index 1dd15d6..5eaf640 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -13,8 +13,7 @@
 -----------------
 
 - Issue #3705: fix crash when given a non-ascii value on the command line for
-  the "-c" and "-m" parameters. Now the behaviour is as expected under Linux,
-  although under Windows it fails at a later point.
+  the "-c" and "-m" parameters.
 
 - Issue #3279: Importing site at interpreter was failing silently because the
   site module uses the open builtin which was not initialized at the time.
diff --git a/Modules/main.c b/Modules/main.c
index 5a84cc2..2148ccc 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -287,7 +287,7 @@
 {
 	int c;
 	int sts;
-	char *command = NULL;
+	wchar_t *command = NULL;
 	wchar_t *filename = NULL;
 	wchar_t *module = NULL;
 	FILE *fp = stdin;
@@ -299,7 +299,6 @@
 	int version = 0;
 	int saw_unbuffered_flag = 0;
 	PyCompilerFlags cf;
-	char *oldloc;
 
 	cf.cf_flags = 0;
 
@@ -310,30 +309,19 @@
 
 	while ((c = _PyOS_GetOpt(argc, argv, PROGRAM_OPTS)) != EOF) {
 		if (c == 'c') {
-			size_t r1, r2;
-			oldloc = setlocale(LC_ALL, NULL);
-			setlocale(LC_ALL, "");
-			r1 = wcslen(_PyOS_optarg);
-			r2 = wcstombs(NULL, _PyOS_optarg, r1);
-			if (r2 == (size_t) -1)
-				Py_FatalError(
-				   "cannot convert character encoding of -c argument");
-			if (r2 > r1)
-				r1 = r2;
-			r1 += 2;
+			size_t len;
 			/* -c is the last option; following arguments
 			   that look like options are left for the
 			   command to interpret. */
-			command = (char *)malloc(r1);
+
+			len = wcslen(_PyOS_optarg) + 1 + 1;
+			command = (wchar_t *)malloc(sizeof(wchar_t) * len);
 			if (command == NULL)
 				Py_FatalError(
 				   "not enough memory to copy -c argument");
-			r2 = wcstombs(command, _PyOS_optarg, r1);
-			if (r2 > r1-1)
-				Py_FatalError(
-				    "not enough memory to copy -c argument");
-			strcat(command, "\n");
-			setlocale(LC_ALL, oldloc);
+			wcscpy(command, _PyOS_optarg);
+			command[len - 2] = '\n';
+			command[len - 1] = 0;
 			break;
 		}
 
@@ -543,8 +531,18 @@
 	}
 
 	if (command) {
-		sts = PyRun_SimpleStringFlags(command, &cf) != 0;
+		PyObject *commandObj = PyUnicode_FromUnicode(
+		                           command, wcslen(command));
 		free(command);
+		if (commandObj != NULL) {
+			sts = PyRun_SimpleStringFlags(
+				_PyUnicode_AsString(commandObj), &cf) != 0;
+		}
+		else {
+			PyErr_Print();
+			sts = 1;
+		}
+		Py_DECREF(commandObj);
 	} else if (module) {
 		sts = RunModule(module, 1);
 	}
diff --git a/Python/import.c b/Python/import.c
index 9c077fe..13e46ad 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2804,6 +2804,7 @@
 {
 	extern int fclose(FILE *);
 	PyObject *fob, *ret;
+	PyObject *pathobj;
 	struct filedescr *fdp;
 	char pathname[MAXPATHLEN+1];
 	FILE *fp = NULL;
@@ -2847,9 +2848,9 @@
 		fob = Py_None;
 		Py_INCREF(fob);
 	}
-	ret = Py_BuildValue("Os(ssi)",
-		      fob, pathname, fdp->suffix, fdp->mode, fdp->type);
-	Py_DECREF(fob);
+	pathobj = PyUnicode_DecodeFSDefault(pathname);
+	ret = Py_BuildValue("NN(ssi)",
+		      fob, pathobj, fdp->suffix, fdp->mode, fdp->type);
 	PyMem_FREE(found_encoding);
 
 	return ret;
@@ -2860,7 +2861,9 @@
 {
 	char *name;
 	PyObject *path = NULL;
-	if (!PyArg_ParseTuple(args, "s|O:find_module", &name, &path))
+	if (!PyArg_ParseTuple(args, "es|O:find_module", 
+		                  Py_FileSystemDefaultEncoding, &name, 
+						  &path))
 		return NULL;
 	return call_find_module(name, path);
 }
