diff -Naur readline-6.3-orig/kill.c readline-6.3/kill.c
--- readline-6.3-orig/kill.c	2010-12-07 01:44:58.000000000 +0100
+++ readline-6.3/kill.c	2015-12-17 20:08:50.652036500 +0100
@@ -660,16 +660,40 @@
 #if defined (_WIN32)
 #include <windows.h>
 
+static char*
+utf16_to_utf8 (wdata)
+     wchar_t *wdata;
+{
+  int size;
+  char *data;
+
+  size = WideCharToMultiByte (CP_UTF8, 0, wdata, -1, NULL, 0, NULL, NULL);
+  if (size == 0)
+    return NULL;
+
+  data = xmalloc (size);
+  if (WideCharToMultiByte (CP_UTF8, 0, wdata, -1, data, size, NULL, NULL) != size)
+  {
+    xfree (data);
+    return NULL;
+  }
+
+  return data;
+}
+
 int
 rl_paste_from_clipboard (int count, int key)
 {
+  wchar_t *wdata;
   char *data, *ptr;
   int len;
 
   if (OpenClipboard (NULL) == 0)
     return (0);
 
-  data = (char *)GetClipboardData (CF_TEXT);
+  wdata = (wchar_t *)GetClipboardData(CF_UNICODETEXT);
+  CloseClipboard ();
+  data = utf16_to_utf8 (wdata);
   if (data)
     {
       ptr = strchr (data, '\r');
@@ -687,7 +711,6 @@
       rl_insert_text (ptr);
       if (ptr != data)
 	xfree (ptr);
-      CloseClipboard ();
     }
   return (0);
 }
