updated for version 7.0071
diff --git a/src/charset.c b/src/charset.c
index 00a5326..c198284 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -991,14 +991,15 @@
     else
 #endif
     {
-	/* Rough guess: use isalpha() for characters above 128. */
+	/* Rough guess: use isalpha() and isupper() for characters above 128.
+	 * */
 	for (i = 128; i < 256; ++i)
 	{
-	    spelltab.st_isw[i] = isalpha(i);
-	    if (isupper(i))
+	    spelltab.st_isw[i] = MB_ISUPPER(i) || MB_ISLOWER(i);
+	    if (MB_ISUPPER(i))
 	    {
 		spelltab.st_isu[i] = TRUE;
-		spelltab.st_fold[i] = tolower(i);
+		spelltab.st_fold[i] = MB_TOLOWER(i);
 	    }
 	}
     }
@@ -1150,6 +1151,8 @@
 #if defined(FEAT_MBYTE) || defined(PROTO)
 /*
  * Write the current tables into the .spl file.
+ * This makes sure the same characters are recognized as word characters when
+ * generating an when using a spell file.
  */
     void
 write_spell_chartab(fd)
@@ -1160,15 +1163,6 @@
     int		flags;
     int		i;
 
-    if (!did_set_spelltab)
-    {
-	/* No character table specified, write zero counts. */
-	fputc(0, fd);
-	fputc(0, fd);
-	fputc(0, fd);
-	return;
-    }
-
     fputc(128, fd);				    /* <charflagslen> */
     for (i = 128; i < 256; ++i)
     {