diff --git a/dlls/kernel/locale.c b/dlls/kernel/locale.c
index 39542bbed4dbb0acde427d0f4fcbee5d47aea5be..0689bdb6e0012f1640d26eb913811a052ee661f9 100644
--- a/dlls/kernel/locale.c
+++ b/dlls/kernel/locale.c
@@ -83,35 +83,22 @@ static const struct charset_entry
     { "IBM869", 869 },
     { "IBM874", 874 },
     { "IBM875", 875 },
-    { "ISO-8859-1", 28591 },
-    { "ISO-8859-10", 28600 },
-    { "ISO-8859-13", 28603 },
-    { "ISO-8859-14", 28604 },
-    { "ISO-8859-15", 28605 },
-    { "ISO-8859-2", 28592 },
-    { "ISO-8859-3", 28593 },
-    { "ISO-8859-4", 28594 },
-    { "ISO-8859-5", 28595 },
-    { "ISO-8859-6", 28596 },
-    { "ISO-8859-7", 28597 },
-    { "ISO-8859-8", 28598 },
-    { "ISO-8859-9", 28599 },
-    { "ISO_8859-1", 28591 },
-    { "ISO_8859-10", 28600 },
-    { "ISO_8859-13", 28603 },
-    { "ISO_8859-14", 28604 },
-    { "ISO_8859-15", 28605 },
-    { "ISO_8859-2", 28592 },
-    { "ISO_8859-3", 28593 },
-    { "ISO_8859-4", 28594 },
-    { "ISO_8859-5", 28595 },
-    { "ISO_8859-6", 28596 },
-    { "ISO_8859-7", 28597 },
-    { "ISO_8859-8", 28598 },
-    { "ISO_8859-9", 28599 },
-    { "KOI8-R", 20866 },
-    { "KOI8-U", 20866 },
-    { "UTF-8", CP_UTF8 }
+    { "ISO88591", 28591 },
+    { "ISO885910", 28600 },
+    { "ISO885913", 28603 },
+    { "ISO885914", 28604 },
+    { "ISO885915", 28605 },
+    { "ISO88592", 28592 },
+    { "ISO88593", 28593 },
+    { "ISO88594", 28594 },
+    { "ISO88595", 28595 },
+    { "ISO88596", 28596 },
+    { "ISO88597", 28597 },
+    { "ISO88598", 28598 },
+    { "ISO88599", 28599 },
+    { "KOI8R", 20866 },
+    { "KOI8U", 20866 },
+    { "UTF8", CP_UTF8 }
 };
 
 #define NLS_MAX_LANGUAGES 20
@@ -440,8 +427,17 @@ static LCID init_default_lcid( UINT *unix_cp )
             if (ret && charset)
             {
                 const struct charset_entry *entry;
-                entry = bsearch( charset, charset_names, sizeof(charset_names)/sizeof(charset_names[0]),
-                               sizeof(charset_names[0]), charset_cmp );
+                char charset_name[16];
+                int i, j;
+
+                /* remove punctuation characters from charset name */
+                for (i = j = 0; charset[i] && j < sizeof(charset_name)-1; i++)
+                    if (isalnum(charset[i])) charset_name[j++] = charset[i];
+                charset_name[j] = 0;
+
+                entry = bsearch( charset_name, charset_names,
+                                 sizeof(charset_names)/sizeof(charset_names[0]),
+                                 sizeof(charset_names[0]), charset_cmp );
                 if (entry)
                 {
                     *unix_cp = entry->codepage;