--- tar-1.15.1/src/extract.c	Tue Dec 21 22:55:12 2004
+++ tar-1.15.1.patch/src/extract.c	Fri Dec  9 19:23:28 2005
@@ -615,6 +615,8 @@
   mode_t mode;
   off_t size;
   int interdir_made = 0;
+  int clamp_to_ascii = 0;
+  int i;
   char typeflag;
   char *file_name;
 
@@ -731,6 +733,16 @@
 	  if (maybe_recoverable (file_name, &interdir_made))
 	    goto again_file;
 
+          // still not openable? try to clamp filename to ascii chars
+          if(!clamp_to_ascii){
+            for(i=0;i<strlen(file_name);i++) {
+              file_name[i] = file_name[i] > 126 ? '_' : file_name[i];
+              file_name[i] = file_name[i] < 32 ? '_' : file_name[i];
+            }
+            clamp_to_ascii = 1;
+            goto again_file;
+          }
+          
 	  open_error (file_name);
 	  skip_member ();
 	  if (backup_option)
