diff --git a/src/sbbs3/str_util.c b/src/sbbs3/str_util.c
index d67caf834606d7c35c0003b0a5833ef5dc4e51bd..8918635dfc81484b0b41973b4d4e4cafb55c960f 100644
--- a/src/sbbs3/str_util.c
+++ b/src/sbbs3/str_util.c
@@ -68,7 +68,7 @@ char* strip_ctrl(const char *str, char* dest)
 			if(str[i]=='<' && j)	
 				j--;
 		}
-		else if((uchar)str[i]>=' ')
+		else if((uchar)str[i]>=' ' && str[i] != DEL)
 			dest[j++]=str[i];
 	}
 	dest[j]=0;
@@ -215,6 +215,20 @@ char* strip_exascii(const char *str, char* dest)
 	return dest;
 }
 
+char* strip_cp437_graphics(const char *str, char* dest)
+{
+	int	i,j;
+
+	if(dest==NULL && (dest=strdup(str))==NULL)
+		return NULL;
+	for(i=j=0;str[i];i++)
+		if((uchar)str[i] <= (uchar)CP437_INVERTED_EXCLAMATION_MARK
+			|| (uchar)str[i] >= (uchar)CP437_GREEK_SMALL_LETTER_ALPHA)
+			dest[j++]=str[i];
+	dest[j]=0;
+	return dest;
+}
+
 char* strip_space(const char *str, char* dest)
 {
 	int	i,j;
diff --git a/src/sbbs3/str_util.h b/src/sbbs3/str_util.h
index a772c591f8c2817b991a79c8013ae1ba023fb825..24bd3f1d2e28c109764a28496064d4995da991bb 100644
--- a/src/sbbs3/str_util.h
+++ b/src/sbbs3/str_util.h
@@ -55,6 +55,7 @@ DLLEXPORT str_list_t trashcan_list(scfg_t* cfg, const char* name);
 DLLEXPORT char *	convert_ansi(const char* src, char* dest, size_t, int width, BOOL ice_color);
 DLLEXPORT char *	strip_ansi(char* str);
 DLLEXPORT char *	strip_exascii(const char *str, char* dest);
+DLLEXPORT char *	strip_cp437_graphics(const char *str, char* dest);
 DLLEXPORT char *	strip_space(const char *str, char* dest);
 DLLEXPORT char *	strip_ctrl(const char *str, char* dest);
 DLLEXPORT char *	strip_char(const char* str, char* dest, char);