diff --git a/src/sbbs3/uedit/uedit.c b/src/sbbs3/uedit/uedit.c
index e7abd75c3de02fe20e71f4ee7f0025089b9f665d..8cd1ba5a64d56760525b76069e674089f9732932 100644
--- a/src/sbbs3/uedit/uedit.c
+++ b/src/sbbs3/uedit/uedit.c
@@ -60,6 +60,7 @@ struct user_list {
 uifcapi_t uifc; /* User Interface (UIFC) Library API */
 char YesStr[]="Yes";
 char NoStr[]="No";
+char sepchar = 0xb3;
 
 #define GETUSERDAT(cfg, user)	if (getuserdat(cfg, user) != 0) { uifc.msg("Error reading user database!"); return -1; }
 
@@ -1683,6 +1684,7 @@ int finduser(scfg_t *cfg, user_t *user)
 	int i,j,last;
 	ushort un;
 	char str[256];
+	char title[256];
 	struct user_list **opt;
 	int done=0;
 
@@ -1706,7 +1708,7 @@ int finduser(scfg_t *cfg, user_t *user)
 				FREE_AND_NULL(opt[j]);
 				if((opt[j]=(struct user_list *)malloc(sizeof(struct user_list)))==NULL)
 					allocfail(sizeof(struct user_list));
-				sprintf(opt[j]->info,"%1.1s�%1.1s� %-25.25s � %-25.25s",user->misc&DELETED?"*":" ",user->misc&INACTIVE?"*":" ",user->name,user->alias);
+				sprintf(opt[j]->info,"%1.1s%c%1.1s%c %-25.25s %c %-25.25s",user->misc&DELETED?"Y":"N",sepchar,user->misc&INACTIVE?"Y":"N",sepchar,user->name,sepchar,user->alias);
 				opt[j++]->usernum=i;
 			}
 		}
@@ -1715,7 +1717,8 @@ int finduser(scfg_t *cfg, user_t *user)
 			allocfail(sizeof(struct user_list));
 		opt[j]->info[0]=0;
 		i=0;
-		switch(uifc.list(WIN_ORG|WIN_MID|WIN_ACT,0,0,0,&i,0,"D�I� Real Name                 � Alias                    ",(char **)opt)) {
+		sprintf(title,"D%cI%c Real Name                 %c Alias                    ", sepchar, sepchar, sepchar);
+		switch(uifc.list(WIN_ORG|WIN_MID|WIN_ACT,0,0,0,&i,0,title,(char **)opt)) {
 			case -1:
 				done=1;
 				break;
@@ -1737,6 +1740,7 @@ int getuser(scfg_t *cfg, user_t *user, char* str)
 	int i,j,last;
 	struct user_list **opt;
 	int done=0;
+	char title[256];
 
 	if((opt=(struct user_list **)malloc(sizeof(struct user_list *)*(MAX_OPTS+1)))==NULL)
 		allocfail(sizeof(struct user_list *)*(MAX_OPTS+1));
@@ -1755,7 +1759,7 @@ int getuser(scfg_t *cfg, user_t *user, char* str)
 				FREE_AND_NULL(opt[j]);
 				if((opt[j]=(struct user_list *)malloc(sizeof(struct user_list)))==NULL)
 					allocfail(sizeof(struct user_list));
-				sprintf(opt[j]->info,"%1.1s�%1.1s� %-25.25s � %-25.25s",user->misc&DELETED?"*":" ",user->misc&INACTIVE?"*":" ",user->name,user->alias);
+				sprintf(opt[j]->info,"%1.1s%c%1.1s%c %-25.25s %c %-25.25s",user->misc&DELETED?"Y":"N",sepchar,user->misc&INACTIVE?"Y":"N",sepchar,user->name,sepchar,user->alias);
 				opt[j++]->usernum=i;
 			}
 		}
@@ -1764,7 +1768,8 @@ int getuser(scfg_t *cfg, user_t *user, char* str)
 			allocfail(sizeof(struct user_list));
 		opt[j]->info[0]=0;
 		i=0;
-		switch(uifc.list(WIN_ORG|WIN_MID|WIN_ACT,0,0,0,&i,0,"D�I� Real Name                 � Alias                    ",(char **)opt)) {
+		sprintf(title, "D%cI%c Real Name                 %c Alias                    ", sepchar, sepchar, sepchar);
+		switch(uifc.list(WIN_ORG|WIN_MID|WIN_ACT,0,0,0,&i,0,title,(char **)opt)) {
 			case -1:
 				done=1;
 				break;
@@ -1879,6 +1884,7 @@ int main(int argc, char** argv)  {
 	user_t	user;
 	int		edtuser=0;
 	int		ciolib_mode=CIOLIB_MODE_AUTO;
+	bool uifcx = false;
 
 	/******************/
 	/* Ini file stuff */
@@ -1962,6 +1968,11 @@ int main(int argc, char** argv)  {
 						case 'C':
 							ciolib_mode=CIOLIB_MODE_CURSES;
 							break;
+						case 'D':
+							ciolib_mode=CIOLIB_MODE_ANSI;
+							uifcx = true;
+							sepchar = ',';
+							break;
 						case 0:
 							printf("NOTICE: The -i option is deprecated, use -if instead\n");
 							SLEEP(2000);
@@ -1998,6 +2009,7 @@ int main(int argc, char** argv)  {
 						"       W = Win32 console mode\n"
 #endif
 						"       A = ANSI mode\n"
+						"       D = Dumb terminal mode\n"
                         "-l# =  set screen lines to #\n"
 						,argv[0]
                         );
@@ -2012,12 +2024,17 @@ int main(int argc, char** argv)  {
 #endif
 
 	uifc.size=sizeof(uifc);
-	i=initciolib(ciolib_mode);
-	if(i!=0) {
-    	printf("ciolib library init returned error %d\n",i);
-    	exit(1);
+	if (uifcx) {
+		i=uifcinix(&uifc);
+	}
+	else {
+		i=initciolib(ciolib_mode);
+		if(i!=0) {
+			printf("ciolib library init returned error %d\n",i);
+			exit(1);
+		}
+		i=uifcini32(&uifc);  /* curses */
 	}
-	i=uifcini32(&uifc);  /* curses */
 	if(i!=0) {
 		printf("uifc library init returned error %d\n",i);
 		exit(1);
@@ -2107,11 +2124,12 @@ int main(int argc, char** argv)  {
 				for(i=1; i<=last; i++) {
 					user.number=i;
 					GETUSERDAT(&cfg,&user);
-					sprintf(opt[i-1],"%1.1s�%1.1s� %-25.25s � %-25.25s",user.misc&DELETED?"*":" ",user.misc&INACTIVE?"*":" ",user.name,user.alias);
+					sprintf(opt[i-1],"%1.1s%c%1.1s%c %-25.25s %c %-25.25s",user.misc&DELETED?"Y":"N",sepchar,user.misc&INACTIVE?"Y":"N",sepchar,user.name,sepchar,user.alias);
 				}
 				opt[i-1][0]=0;
 				i=0;
-				switch(uifc.list(WIN_ORG|WIN_MID|WIN_ACT,0,0,0,&curuser,&curbar,"�D�I� Real Name                 � Alias                    ",opt)) {
+				sprintf(str, "%cD%cI%c Real Name                 %c Alias                    ", sepchar, sepchar, sepchar, sepchar);
+				switch(uifc.list(WIN_ORG|WIN_MID|WIN_ACT,0,0,0,&curuser,&curbar,str,opt)) {
 					case -1:
 						done=1;
 						break;
@@ -2129,11 +2147,14 @@ int main(int argc, char** argv)  {
 				for(i=1,j=0; i<=last; i++) {
 					user.number = i;
 					GETUSERDAT(&cfg, &user);
-					sprintf(opt[j++], "%-4u � %-25.25s � %-25.25s", i, user.name, user.alias);
+					if (user.misc & (DELETED | INACTIVE))
+						continue;
+					sprintf(opt[j++], "%-4u %c %-25.25s %c %-25.25s", i, sepchar, user.name, sepchar, user.alias);
 				}
 				opt[j][0] = 0;
 				i=0;
-				switch(uifc.list(WIN_ORG|WIN_MID|WIN_ACT,0,0,0,&i,0,"Num  � Real Name                 � Alias                    ",opt)) {
+				sprintf(str, "Num  %c Real Name                 %c Alias                    ", sepchar, sepchar);
+				switch(uifc.list(WIN_ORG|WIN_MID|WIN_ACT,0,0,0,&i,0,str,opt)) {
 					case -1:
 						done = 1;
 						break;