diff --git a/TODO.md b/TODO.md
index 0de744b..97c6da4 100644
--- a/TODO.md
+++ b/TODO.md
@@ -67,5 +67,5 @@
 
 Windows
 - [ ] is_atty is not working with cygwin/msys
-- [ ] UTF-16 surrogate pair
+- [X] UTF-16 surrogate pair
 - [ ] handle ansi escape code (https://docs.rs/console/0.6.1/console/fn.strip_ansi_codes.html ?)
diff --git a/src/tty/windows.rs b/src/tty/windows.rs
index 4ec4209..0bdfc2f 100644
--- a/src/tty/windows.rs
+++ b/src/tty/windows.rs
@@ -87,13 +87,13 @@
 /// Console input reader
 pub struct ConsoleRawReader {
     handle: HANDLE,
-    buf: Option<u16>,
+    buf: [u16; 2],
 }
 
 impl ConsoleRawReader {
     pub fn new() -> Result<ConsoleRawReader> {
         let handle = try!(get_std_handle(STDIN_FILENO));
-        Ok(ConsoleRawReader { handle, buf: None })
+        Ok(ConsoleRawReader { handle, buf: [0; 2] })
     }
 }
 
@@ -105,6 +105,7 @@
 
         let mut rec: wincon::INPUT_RECORD = unsafe { mem::zeroed() };
         let mut count = 0;
+        let mut surrogate = false;
         loop {
             // TODO GetNumberOfConsoleInputEvents
             check!(consoleapi::ReadConsoleInputW(
@@ -192,9 +193,19 @@
             } else if utf16 == 27 {
                 return Ok(KeyPress::Esc);
             } else {
-                // TODO How to support surrogate pair ?
-                self.buf = Some(utf16);
-                let orc = decode_utf16(self).next();
+                if utf16 >= 0xD800 && utf16 < 0xDC00 {
+                    surrogate = true;
+                    self.buf[0] = utf16;
+                    continue;
+                }
+                let buf = if surrogate {
+                    self.buf[1] = utf16;
+                    &self.buf[..]
+                } else {
+                    self.buf[0] = utf16;
+                    &self.buf[..1]
+                };
+                let orc = decode_utf16(buf.iter().cloned()).next();
                 if orc.is_none() {
                     return Err(error::ReadlineError::Eof);
                 }
@@ -209,16 +220,6 @@
     }
 }
 
-impl Iterator for ConsoleRawReader {
-    type Item = u16;
-
-    fn next(&mut self) -> Option<u16> {
-        let buf = self.buf;
-        self.buf = None;
-        buf
-    }
-}
-
 pub struct ConsoleRenderer {
     out: Stdout,
     handle: HANDLE,
