diff --git a/src/terminal/console.rs b/src/terminal/console.rs
index 9407dc1e4a11f3837dc87b6a8995d1b2a49c8b22..ec30e909abcd635c3fc7b156547594916186e8d8 100644
--- a/src/terminal/console.rs
+++ b/src/terminal/console.rs
@@ -206,13 +206,14 @@ impl Console {
             let font_bold = &self.font_bold;
             let window = &mut self.window;
             let changed = &mut self.changed;
+            let mut str_buf = [0; 4];
             self.console.write(buf, |event| {
                 match event {
                     ransid::Event::Char { x, y, c, color, bold, .. } => {
                         if bold {
-                            font_bold.render(&c.to_string(), 16.0).draw(window, x as i32 * 8, y as i32 * 16, Color { data: color.data });
+                            font_bold.render(&c.encode_utf8(&mut str_buf), 16.0).draw(window, x as i32 * 8, y as i32 * 16, Color { data: color.data });
                         } else {
-                            font.render(&c.to_string(), 16.0).draw(window, x as i32 * 8, y as i32 * 16, Color { data: color.data });
+                            font.render(&c.encode_utf8(&mut str_buf), 16.0).draw(window, x as i32 * 8, y as i32 * 16, Color { data: color.data });
                         }
                         changed.insert(y);
                     },