diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index 88a827c..3fad3cb 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -1238,6 +1238,17 @@ void WCMD_leave_paged_mode(void)
   pagedMessage = NULL;
 }
 
+/*
+ * message in ANSI codepage. Convert it to OEM and out.
+ */
+void my_WriteFile(const char *message, int len, LPDWORD count)
+{
+    static char oem_str[10000]; /* Enough for demonstration */
+
+    CharToOem(message, oem_str);
+    WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), oem_str, len, count, NULL);
+}
+
 /*******************************************************************
  * WCMD_output_asis - send output to current standard output device.
  *        without formatting eg. when message contains '%'
@@ -1251,8 +1262,7 @@ void WCMD_output_asis (const char *messa
   if (paged_mode) {
     do {
       if ((ptr = strchr(message, '\n')) != NULL) ptr++;
-      WriteFile (GetStdHandle(STD_OUTPUT_HANDLE), message,
-                 (ptr) ? ptr - message : lstrlen(message), &count, NULL);
+      my_WriteFile(message, (ptr) ? ptr - message : lstrlen(message), &count);
       if (ptr) {
         if (++line_count >= max_height - 1) {
           line_count = 0;
@@ -1262,11 +1272,10 @@ void WCMD_output_asis (const char *messa
       }
     } while ((message = ptr) != NULL);
   } else {
-      WriteFile (GetStdHandle(STD_OUTPUT_HANDLE), message, lstrlen(message), &count, NULL);
+      my_WriteFile(message, lstrlen(message), &count);
   }
 }
 
-
 /***************************************************************************
  * WCMD_strtrim_leading_spaces
  *
