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");