Index: uspace/lib/libc/generic/io/io.c
===================================================================
--- uspace/lib/libc/generic/io/io.c	(revision d2cc7e180f6a8ca583560ae28fcb1beae2fb36a1)
+++ uspace/lib/libc/generic/io/io.c	(revision a78d001740e2ccd838b22b766e7d7338534733e0)
@@ -37,4 +37,6 @@
 #include <stdio.h>
 #include <io/io.h>
+#include <string.h>
+#include <errno.h>
 
 const static char nl = '\n';
@@ -88,8 +90,14 @@
 int putchar(int c)
 {
-	unsigned char ch = c;
-	if (write_stdout((void *) &ch, 1) == 1)
+	char buf[STR_BOUNDS(1)];
+	size_t offs;
+
+	offs = 0;
+	if (chr_encode(c, buf, &offs, STR_BOUNDS(1)) != EOK)
+		return EOF;
+
+	if (write_stdout((void *) buf, offs) == offs)
 		return c;
-	
+
 	return EOF;
 }
