Index: kernel/arch/abs32le/src/abs32le.c
===================================================================
--- kernel/arch/abs32le/src/abs32le.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/abs32le/src/abs32le.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -136,5 +136,5 @@
 }
 
-void early_putchar(wchar_t ch)
+void early_putwchar(wchar_t ch)
 {
 }
Index: kernel/arch/amd64/src/asm.S
===================================================================
--- kernel/arch/amd64/src/asm.S	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/amd64/src/asm.S	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -412,5 +412,5 @@
  *
  */
-FUNCTION_BEGIN(early_putchar)
+FUNCTION_BEGIN(early_putwchar)
 #if ((defined(CONFIG_EGA)) && (!defined(CONFIG_FB)))
 
@@ -443,9 +443,9 @@
 	/* Sanity check for the cursor on screen */
 	cmp $2000, %ax
-	jb early_putchar_cursor_ok
+	jb early_putwchar_cursor_ok
 
 		movw $1998, %ax
 
-	early_putchar_cursor_ok:
+	early_putwchar_cursor_ok:
 
 	movw %ax, %bx
@@ -456,5 +456,5 @@
 
 	cmp $0x0a, %al
-	jne early_putchar_backspace
+	jne early_putwchar_backspace
 
 		/* Interpret newline */
@@ -470,20 +470,20 @@
 		subw %dx, %bx
 
-		jmp early_putchar_skip
-
-	early_putchar_backspace:
+		jmp early_putwchar_skip
+
+	early_putwchar_backspace:
 
 		cmp $0x08, %al
-		jne early_putchar_print
+		jne early_putwchar_print
 
 		/* Interpret backspace */
 
 		cmp $0x0000, %bx
-		je early_putchar_skip
+		je early_putwchar_skip
 
 		dec %bx
-		jmp early_putchar_skip
-
-	early_putchar_print:
+		jmp early_putwchar_skip
+
+	early_putwchar_print:
 
 		/* Print character */
@@ -493,9 +493,9 @@
 		inc %bx
 
-	early_putchar_skip:
+	early_putwchar_skip:
 
 	/* Sanity check for the cursor on the last line */
 	cmp $2000, %bx
-	jb early_putchar_no_scroll
+	jb early_putwchar_no_scroll
 
 		/* Scroll the screen (24 rows) */
@@ -513,5 +513,5 @@
 		movw $1920, %bx
 
-	early_putchar_no_scroll:
+	early_putwchar_no_scroll:
 
 	/* Write bits 8 - 15 of the cursor address */
@@ -540,3 +540,3 @@
 
 	ret
-FUNCTION_END(early_putchar)
+FUNCTION_END(early_putwchar)
Index: kernel/arch/arm32/src/asm.S
===================================================================
--- kernel/arch/arm32/src/asm.S	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/arm32/src/asm.S	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -98,5 +98,5 @@
 	ldmia sp!, {r4, r5, pc}
 
-FUNCTION_BEGIN(early_putchar)
+FUNCTION_BEGIN(early_putwchar)
 	mov pc, lr
-FUNCTION_END(early_putchar)
+FUNCTION_END(early_putwchar)
Index: kernel/arch/ia32/src/asm.S
===================================================================
--- kernel/arch/ia32/src/asm.S	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/ia32/src/asm.S	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -451,5 +451,5 @@
  *
  */
-FUNCTION_BEGIN(early_putchar)
+FUNCTION_BEGIN(early_putwchar)
 
 #if ((defined(CONFIG_EGA)) && (!defined(CONFIG_FB)))
@@ -484,9 +484,9 @@
 	/* Sanity check for the cursor on screen */
 	cmp $2000, %ax
-	jb early_putchar_cursor_ok
+	jb early_putwchar_cursor_ok
 
 		movw $1998, %ax
 
-	early_putchar_cursor_ok:
+	early_putwchar_cursor_ok:
 
 	movw %ax, %bx
@@ -497,5 +497,5 @@
 
 	cmp $0x0a, %al
-	jne early_putchar_backspace
+	jne early_putwchar_backspace
 
 		/* Interpret newline */
@@ -511,20 +511,20 @@
 		subw %dx, %bx
 
-		jmp early_putchar_skip
-
-	early_putchar_backspace:
+		jmp early_putwchar_skip
+
+	early_putwchar_backspace:
 
 		cmp $0x08, %al
-		jne early_putchar_print
+		jne early_putwchar_print
 
 		/* Interpret backspace */
 
 		cmp $0x0000, %bx
-		je early_putchar_skip
+		je early_putwchar_skip
 
 		dec %bx
-		jmp early_putchar_skip
-
-	early_putchar_print:
+		jmp early_putwchar_skip
+
+	early_putwchar_print:
 
 		/* Print character */
@@ -534,9 +534,9 @@
 		inc %bx
 
-	early_putchar_skip:
+	early_putwchar_skip:
 
 	/* Sanity check for the cursor on the last line */
 	cmp $2000, %bx
-	jb early_putchar_no_scroll
+	jb early_putwchar_no_scroll
 
 		/* Scroll the screen (24 rows) */
@@ -554,5 +554,5 @@
 		movw $1920, %bx
 
-	early_putchar_no_scroll:
+	early_putwchar_no_scroll:
 
 	/* Write bits 8 - 15 of the cursor address */
@@ -583,4 +583,4 @@
 
 	ret
-FUNCTION_END(early_putchar)
-
+FUNCTION_END(early_putwchar)
+
Index: kernel/arch/ia64/src/asm.S
===================================================================
--- kernel/arch/ia64/src/asm.S	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/ia64/src/asm.S	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -191,5 +191,5 @@
 FUNCTION_END(switch_to_userspace)
 
-FUNCTION_BEGIN(early_putchar)
+FUNCTION_BEGIN(early_putwchar)
 	br.ret.sptk.many b0
-FUNCTION_END(early_putchar)
+FUNCTION_END(early_putwchar)
Index: kernel/arch/ia64/src/drivers/ski.c
===================================================================
--- kernel/arch/ia64/src/drivers/ski.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/ia64/src/drivers/ski.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -58,8 +58,8 @@
 };
 
-static void ski_putchar(outdev_t *, const wchar_t);
+static void ski_putwchar(outdev_t *, const wchar_t);
 
 static outdev_operations_t skidev_ops = {
-	.write = ski_putchar,
+	.write = ski_putwchar,
 	.redraw = NULL,
 	.scroll_up = NULL,
@@ -166,5 +166,5 @@
 }
 
-static void ski_do_putchar(const wchar_t ch)
+static void ski_do_putchar(char ch)
 {
 	asm volatile (
@@ -187,5 +187,5 @@
  *
  */
-static void ski_putchar(outdev_t *dev, const wchar_t ch)
+static void ski_putwchar(outdev_t *dev, wchar_t ch)
 {
 	// TODO FIXME:
@@ -198,6 +198,7 @@
 
 			ski_do_putchar(ch);
-		} else
-			ski_do_putchar(U_SPECIAL);
+		} else {
+			ski_do_putchar('?');
+		}
 	}
 }
Index: kernel/arch/mips32/src/asm.S
===================================================================
--- kernel/arch/mips32/src/asm.S	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/mips32/src/asm.S	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -296,6 +296,6 @@
 FUNCTION_END(fpu_context_restore)
 
-FUNCTION_BEGIN(early_putchar)
+FUNCTION_BEGIN(early_putwchar)
 	j $ra
 	nop
-FUNCTION_END(early_putchar)
+FUNCTION_END(early_putwchar)
Index: kernel/arch/mips32/src/mach/malta/malta.c
===================================================================
--- kernel/arch/mips32/src/mach/malta/malta.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/mips32/src/mach/malta/malta.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -81,5 +81,5 @@
     (yamon_print_count_ptr_t) YAMON_SUBR_PRINT_COUNT;
 
-static void yamon_putchar(outdev_t *dev, const wchar_t wch)
+static void yamon_putwchar(outdev_t *dev, const wchar_t wch)
 {
 
@@ -91,5 +91,5 @@
 static outdev_t yamon_outdev;
 static outdev_operations_t yamon_outdev_ops = {
-	.write = yamon_putchar,
+	.write = yamon_putwchar,
 	.redraw = NULL,
 	.scroll_up = NULL,
Index: kernel/arch/ppc32/src/asm.S
===================================================================
--- kernel/arch/ppc32/src/asm.S	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/ppc32/src/asm.S	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -265,5 +265,5 @@
 	blr
 
-FUNCTION_BEGIN(early_putchar)
+FUNCTION_BEGIN(early_putwchar)
 	blr
-FUNCTION_END(early_putchar)
+FUNCTION_END(early_putwchar)
Index: kernel/arch/riscv64/include/arch/drivers/ucb.h
===================================================================
--- kernel/arch/riscv64/include/arch/drivers/ucb.h	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/riscv64/include/arch/drivers/ucb.h	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -42,5 +42,5 @@
 extern void htif_init(volatile uint64_t *, volatile uint64_t *);
 extern outdev_t *htifout_init(void);
-extern void htif_putchar(outdev_t *, const wchar_t);
+extern void htif_putwchar(outdev_t *, const wchar_t);
 
 #endif
Index: kernel/arch/riscv64/src/asm.S
===================================================================
--- kernel/arch/riscv64/src/asm.S	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/riscv64/src/asm.S	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -35,7 +35,7 @@
 FUNCTION_END(asm_delay_loop)
 
-FUNCTION_BEGIN(early_putchar)
+FUNCTION_BEGIN(early_putwchar)
 	ret
-FUNCTION_END(early_putchar)
+FUNCTION_END(early_putwchar)
 
 FUNCTION_BEGIN(cpu_halt)
Index: kernel/arch/riscv64/src/drivers/ucb.c
===================================================================
--- kernel/arch/riscv64/src/drivers/ucb.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/riscv64/src/drivers/ucb.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -42,5 +42,5 @@
 
 static outdev_operations_t htifdev_ops = {
-	.write = htif_putchar,
+	.write = htif_putwchar,
 	.redraw = NULL,
 	.scroll_up = NULL,
@@ -85,5 +85,5 @@
 }
 
-void htif_putchar(outdev_t *dev, const wchar_t ch)
+void htif_putwchar(outdev_t *dev, const wchar_t ch)
 {
 	if (ascii_check(ch))
Index: kernel/arch/sparc64/src/asm.S
===================================================================
--- kernel/arch/sparc64/src/asm.S	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/sparc64/src/asm.S	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -189,6 +189,6 @@
 	mov %g0, %o0  /* return 0 on failure */
 
-FUNCTION_BEGIN(early_putchar)
+FUNCTION_BEGIN(early_putwchar)
 	retl
 	nop
-FUNCTION_END(early_putchar)
+FUNCTION_END(early_putwchar)
Index: kernel/arch/sparc64/src/drivers/niagara.c
===================================================================
--- kernel/arch/sparc64/src/drivers/niagara.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/sparc64/src/drivers/niagara.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -58,9 +58,9 @@
 static niagara_instance_t *instance = NULL;
 
-static void niagara_putchar(outdev_t *, const wchar_t);
+static void niagara_putwchar(outdev_t *, const wchar_t);
 
 /** Character device operations */
 static outdev_operations_t niagara_ops = {
-	.write = niagara_putchar,
+	.write = niagara_putwchar,
 	.redraw = NULL,
 	.scroll_up = NULL,
@@ -96,5 +96,5 @@
 
 /** Write a single character to the standard output. */
-static inline void do_putchar(const char c)
+static inline void do_putchar(char c)
 {
 	/* Repeat until the buffer is non-full */
@@ -104,10 +104,14 @@
 
 /** Write a single character to the standard output. */
-static void niagara_putchar(outdev_t *dev, const wchar_t ch)
+static void niagara_putwchar(outdev_t *dev, wchar_t ch)
 {
 	if ((!outbuf_parea.mapped) || (console_override)) {
-		do_putchar(ch);
-		if (ch == '\n')
-			do_putchar('\r');
+		if (ascii_check(ch)) {
+			do_putchar(ch);
+			if (ch == '\n')
+				do_putchar('\r');
+		} else {
+			do_putchar('?');
+		}
 	}
 }
Index: kernel/genarch/src/drivers/dsrln/dsrlnout.c
===================================================================
--- kernel/genarch/src/drivers/dsrln/dsrlnout.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/genarch/src/drivers/dsrln/dsrlnout.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -49,5 +49,5 @@
 } dsrlnout_instance_t;
 
-static void dsrlnout_putchar(outdev_t *dev, const wchar_t ch)
+static void dsrlnout_putwchar(outdev_t *dev, const wchar_t ch)
 {
 	dsrlnout_instance_t *instance = (dsrlnout_instance_t *) dev->data;
@@ -62,5 +62,5 @@
 
 static outdev_operations_t dsrlndev_ops = {
-	.write = dsrlnout_putchar,
+	.write = dsrlnout_putwchar,
 	.redraw = NULL,
 	.scroll_up = NULL,
Index: kernel/genarch/src/drivers/ega/ega.c
===================================================================
--- kernel/genarch/src/drivers/ega/ega.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/genarch/src/drivers/ega/ega.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -72,9 +72,9 @@
 } ega_instance_t;
 
-static void ega_putchar(outdev_t *, wchar_t);
+static void ega_putwchar(outdev_t *, wchar_t);
 static void ega_redraw(outdev_t *);
 
 static outdev_operations_t egadev_ops = {
-	.write = ega_putchar,
+	.write = ega_putwchar,
 	.redraw = ega_redraw,
 	.scroll_up = NULL,
@@ -516,5 +516,5 @@
 }
 
-static void ega_display_char(ega_instance_t *instance, wchar_t ch)
+static void ega_display_wchar(ega_instance_t *instance, wchar_t ch)
 {
 	uint16_t index = ega_oem_glyph(ch);
@@ -539,5 +539,5 @@
 }
 
-static void ega_putchar(outdev_t *dev, wchar_t ch)
+static void ega_putwchar(outdev_t *dev, wchar_t ch)
 {
 	ega_instance_t *instance = (ega_instance_t *) dev->data;
@@ -559,5 +559,5 @@
 		break;
 	default:
-		ega_display_char(instance, ch);
+		ega_display_wchar(instance, ch);
 		instance->cursor++;
 		break;
Index: kernel/genarch/src/drivers/ns16550/ns16550.c
===================================================================
--- kernel/genarch/src/drivers/ns16550/ns16550.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/genarch/src/drivers/ns16550/ns16550.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -92,5 +92,5 @@
 }
 
-static void ns16550_putchar(outdev_t *dev, wchar_t ch)
+static void ns16550_putwchar(outdev_t *dev, wchar_t ch)
 {
 	ns16550_instance_t *instance = (ns16550_instance_t *) dev->data;
@@ -105,5 +105,5 @@
 
 static outdev_operations_t ns16550_ops = {
-	.write = ns16550_putchar,
+	.write = ns16550_putwchar,
 	.redraw = NULL
 };
Index: kernel/genarch/src/drivers/omap/uart.c
===================================================================
--- kernel/genarch/src/drivers/omap/uart.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/genarch/src/drivers/omap/uart.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -49,5 +49,5 @@
 }
 
-static void omap_uart_putchar(outdev_t *dev, wchar_t ch)
+static void omap_uart_putwchar(outdev_t *dev, wchar_t ch)
 {
 	omap_uart_t *uart = dev->data;
@@ -62,5 +62,5 @@
 
 static outdev_operations_t omap_uart_ops = {
-	.write = omap_uart_putchar,
+	.write = omap_uart_putwchar,
 	.redraw = NULL,
 	.scroll_up = NULL,
Index: kernel/genarch/src/drivers/pl011/pl011.c
===================================================================
--- kernel/genarch/src/drivers/pl011/pl011.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/genarch/src/drivers/pl011/pl011.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -56,5 +56,5 @@
 }
 
-static void pl011_uart_putchar(outdev_t *dev, wchar_t ch)
+static void pl011_uart_putwchar(outdev_t *dev, wchar_t ch)
 {
 	pl011_uart_t *uart = dev->data;
@@ -70,5 +70,5 @@
 
 static outdev_operations_t pl011_uart_ops = {
-	.write = pl011_uart_putchar,
+	.write = pl011_uart_putwchar,
 	.redraw = NULL,
 	.scroll_up = NULL,
Index: kernel/genarch/src/drivers/s3c24xx/uart.c
===================================================================
--- kernel/genarch/src/drivers/s3c24xx/uart.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/genarch/src/drivers/s3c24xx/uart.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -61,5 +61,5 @@
 }
 
-static void s3c24xx_uart_putchar(outdev_t *dev, wchar_t ch)
+static void s3c24xx_uart_putwchar(outdev_t *dev, wchar_t ch)
 {
 	s3c24xx_uart_t *uart =
@@ -94,5 +94,5 @@
 
 static outdev_operations_t s3c24xx_uart_ops = {
-	.write = s3c24xx_uart_putchar,
+	.write = s3c24xx_uart_putwchar,
 	.redraw = NULL,
 	.scroll_up = NULL,
Index: kernel/genarch/src/fb/fb.c
===================================================================
--- kernel/genarch/src/fb/fb.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/genarch/src/fb/fb.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -122,5 +122,5 @@
 } fb_instance_t;
 
-static void fb_putchar(outdev_t *, wchar_t);
+static void fb_putwchar(outdev_t *, wchar_t);
 static void fb_redraw(outdev_t *);
 static void fb_scroll_up(outdev_t *);
@@ -128,5 +128,5 @@
 
 static outdev_operations_t fbdev_ops = {
-	.write = fb_putchar,
+	.write = fb_putwchar,
 	.redraw = fb_redraw,
 	.scroll_up = fb_scroll_up,
@@ -410,5 +410,5 @@
  *
  */
-static void fb_putchar(outdev_t *dev, wchar_t ch)
+static void fb_putwchar(outdev_t *dev, wchar_t ch)
 {
 	fb_instance_t *instance = (fb_instance_t *) dev->data;
Index: kernel/generic/include/console/console.h
===================================================================
--- kernel/generic/include/console/console.h	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/generic/include/console/console.h	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -57,5 +57,5 @@
 extern outdev_t *stdout;
 
-extern void early_putchar(wchar_t);
+extern void early_putwchar(wchar_t);
 
 extern indev_t *stdin_wire(void);
Index: kernel/generic/include/putchar.h
===================================================================
--- kernel/generic/include/putchar.h	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/generic/include/putchar.h	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -36,5 +36,7 @@
 #define KERN_PUTCHAR_H_
 
-extern void putchar(const wchar_t ch);
+#include <stddef.h>
+
+extern void putwchar(wchar_t);
 
 #endif
Index: kernel/generic/src/console/console.c
===================================================================
--- kernel/generic/src/console/console.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/generic/src/console/console.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -262,7 +262,7 @@
 			if (count > 0) {
 				/* Space, backspace, space */
-				putchar('\b');
-				putchar(' ');
-				putchar('\b');
+				putwchar('\b');
+				putwchar(' ');
+				putwchar('\b');
 
 				count--;
@@ -273,5 +273,5 @@
 
 		if (chr_encode(ch, buf, &offset, buflen - 1) == EOK) {
-			putchar(ch);
+			putwchar(ch);
 			count++;
 			buf[offset] = 0;
@@ -286,5 +286,5 @@
 {
 	wchar_t ch = indev_pop_character(indev);
-	putchar(ch);
+	putwchar(ch);
 	return ch;
 }
@@ -356,5 +356,5 @@
 }
 
-void putchar(const wchar_t ch)
+void putwchar(const wchar_t ch)
 {
 	bool ordy = ((stdout) && (stdout->op->write));
@@ -373,10 +373,10 @@
 		 * for possible future output.
 		 *
-		 * The early_putchar() function is used to output
+		 * The early_putwchar() function is used to output
 		 * the character for low-level debugging purposes.
 		 * Note that the early_putc() function might be
 		 * a no-op on certain hardware configurations.
 		 */
-		early_putchar(ch);
+		early_putwchar(ch);
 	}
 
Index: kernel/generic/src/console/kconsole.c
===================================================================
--- kernel/generic/src/console/kconsole.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/generic/src/console/kconsole.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -160,5 +160,5 @@
 	size_t i;
 	for (i = 0; i < count; i++)
-		putchar(ch);
+		putwchar(ch);
 }
 
@@ -339,5 +339,5 @@
 		if (ch == '\n') {
 			/* Enter */
-			putchar(ch);
+			putwchar(ch);
 			break;
 		}
@@ -350,5 +350,5 @@
 			if (wstr_remove(current, position - 1)) {
 				position--;
-				putchar('\b');
+				putwchar('\b');
 				printf("%ls ", current + position);
 				print_cc('\b', wstr_length(current) - position + 1);
@@ -363,5 +363,5 @@
 			for (; (current[position] != 0) && (!isspace(current[position]));
 			    position++)
-				putchar(current[position]);
+				putwchar(current[position]);
 
 
@@ -459,5 +459,5 @@
 			/* Left */
 			if (position > 0) {
-				putchar('\b');
+				putwchar('\b');
 				position--;
 			}
@@ -468,5 +468,5 @@
 			/* Right */
 			if (position < wstr_length(current)) {
-				putchar(current[position]);
+				putwchar(current[position]);
 				position++;
 			}
Index: kernel/generic/src/printf/vprintf.c
===================================================================
--- kernel/generic/src/printf/vprintf.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/generic/src/printf/vprintf.c	(revision 24fda5ed4fb3077000933b68f72dfc153ba3db02)
@@ -47,5 +47,5 @@
 
 	while (offset < size) {
-		putchar(str_decode(str, &offset, size));
+		putwchar(str_decode(str, &offset, size));
 		chars++;
 	}
@@ -60,5 +60,5 @@
 
 	while (offset < size) {
-		putchar(str[chars]);
+		putwchar(str[chars]);
 		chars++;
 		offset += sizeof(wchar_t);
@@ -75,9 +75,9 @@
 
 	while ((uc = str_decode(str, &offset, STR_NO_LIMIT)) != 0) {
-		putchar(uc);
+		putwchar(uc);
 		chars++;
 	}
 
-	putchar('\n');
+	putwchar('\n');
 	return chars;
 }
