diff --git a/Python/ceval.c b/Python/ceval.c
index 6c71c27..f72fe4a 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -145,6 +145,7 @@
 static void format_exc_check_arg(PyObject *, char *, PyObject *);
 static PyObject * string_concatenate(PyObject *, PyObject *,
 				    PyFrameObject *, unsigned char *);
+static PyObject * kwd_as_string(PyObject *);
 
 #define NAME_ERROR_MSG \
 	"name '%.200s' is not defined"
@@ -2831,7 +2832,8 @@
 			PyObject *keyword = kws[2*i];
 			PyObject *value = kws[2*i + 1];
 			int j;
-			if (keyword == NULL || !PyString_Check(keyword)) {
+			if (keyword == NULL || !(PyString_Check(keyword) ||
+						 PyUnicode_Check(keyword))) {
 				PyErr_Format(PyExc_TypeError,
 				    "%.200s() keywords must be strings",
 				    PyString_AsString(co->co_name));
@@ -2860,11 +2862,15 @@
 				goto fail;
 			if (j >= co->co_argcount) {
 				if (kwdict == NULL) {
-					PyErr_Format(PyExc_TypeError,
-					    "%.200s() got an unexpected "
-					    "keyword argument '%.400s'",
-					    PyString_AsString(co->co_name),
-					    PyString_AsString(keyword));
+					PyObject *kwd_str = kwd_as_string(keyword);
+					if (kwd_str) {
+						PyErr_Format(PyExc_TypeError,
+							     "%.200s() got an unexpected "
+							     "keyword argument '%.400s'",
+							     PyString_AsString(co->co_name),
+							     PyString_AsString(kwd_str));
+						Py_DECREF(kwd_str);
+					}
 					goto fail;
 				}
 				PyDict_SetItem(kwdict, keyword, value);
@@ -2872,12 +2878,16 @@
 			}
 kw_found:
 			if (GETLOCAL(j) != NULL) {
-				PyErr_Format(PyExc_TypeError,
-						"%.200s() got multiple "
-						"values for keyword "
-						"argument '%.400s'",
-						PyString_AsString(co->co_name),
-						PyString_AsString(keyword));
+				PyObject *kwd_str = kwd_as_string(keyword);
+				if (kwd_str) {
+					PyErr_Format(PyExc_TypeError,
+						     "%.200s() got multiple "
+						     "values for keyword "
+						     "argument '%.400s'",
+						     PyString_AsString(co->co_name),
+						     PyString_AsString(kwd_str));
+					Py_DECREF(kwd_str);
+				}
 				goto fail;
 			}
 			Py_INCREF(value);
@@ -3004,6 +3014,17 @@
 }
 
 
+static PyObject *
+kwd_as_string(PyObject *kwd) {
+	if (PyString_Check(kwd)) {
+		Py_INCREF(kwd);
+		return kwd;
+	}
+	else
+		return _PyUnicode_AsDefaultEncodedString(kwd, "replace");
+}
+
+
 /* Implementation notes for set_exc_info() and reset_exc_info():
 
 - Below, 'exc_ZZZ' stands for 'exc_type', 'exc_value' and
