--- process.c.orig	2008-05-08 02:37:33.000000000 +0800
+++ process.c	2008-05-08 02:37:49.000000000 +0800
@@ -3422,6 +3422,7 @@
 	    {
 	      WinSwitchEncoding(fore, n);
 	      ResetCharsets(fore);
+	      RedisplayDisplays(0);
 	    }
 	  else if (i && display)
 	    D_encoding  = n;
--- screen.c.orig	2008-05-08 02:37:22.000000000 +0800
+++ screen.c	2008-05-20 20:34:37.000000000 +0800
@@ -2584,6 +2584,18 @@
 	    }
 	  p += strlen(p) - 1;
 	  break;
+#ifdef ENCODINGS
+	case 'e':
+	  *p = 0;
+	  D_encoding = nwin_options.encoding > 0 ? nwin_options.encoding : 0;
+	  if (win && win->w_encoding)
+	    {
+	      *p++ = ' ';
+	      strcpy(p, EncodingName(win->w_encoding));
+	    }
+	  p += strlen(p) - 1;
+	  break;
+#endif
 	case '{':
           {
 	    char rbuf[128];
