diff --git a/src/main/java/org/olat/core/util/FileUtils.java b/src/main/java/org/olat/core/util/FileUtils.java
index 9f86bd3f548be160684805533cf88e70c0f28199..49877364b18c46d5ffe2192bc2b02310aa232299 100644
--- a/src/main/java/org/olat/core/util/FileUtils.java
+++ b/src/main/java/org/olat/core/util/FileUtils.java
@@ -824,7 +824,9 @@ public class FileUtils {
 				.replace("\u00E6", "ae");
 		String nameNormalized = Normalizer.normalize(nameFirstPass, Normalizer.Form.NFKD)
 				.replaceAll("\\p{InCombiningDiacriticalMarks}+","");
-		return nameNormalized.replaceAll("\\W+", "");
+		nameNormalized = nameNormalized.replaceAll("\\W+", "");
+		nameNormalized = nameNormalized.length() > 0? nameNormalized: "_";
+		return nameNormalized;
 	}
 	
 	/**
diff --git a/src/test/java/org/olat/core/util/FileUtilsTest.java b/src/test/java/org/olat/core/util/FileUtilsTest.java
index a0dcf57264e46aef50b24892f637f00a3f60f93e..7d955c51e585247c58a4c2f90ceaaa4a8a1dcc1e 100644
--- a/src/test/java/org/olat/core/util/FileUtilsTest.java
+++ b/src/test/java/org/olat/core/util/FileUtilsTest.java
@@ -46,6 +46,13 @@ public class FileUtilsTest {
 		Assert.assertEquals(normalized, "Smorrebrod");
 	}
 	
+	@Test
+	public void normalizeFilename_atLeastOneChar() {
+		String cyrillic = "и́мя фа́йла";
+		String normalized = FileUtils.normalizeFilename(cyrillic);
+		Assert.assertEquals(normalized, "_");
+	}
+	
 	@Test
 	public void cleanedFilename() {
 		assertCleanedFilename("test.xml", "test.xml");