diff --git a/src/main/java/org/olat/core/util/StringHelper.java b/src/main/java/org/olat/core/util/StringHelper.java
index 0d184df22794c496d73917c0177f1b60f4c4bb42..dd72aa14d1d2d5256c69692fcbc89ade8663e1c6 100644
--- a/src/main/java/org/olat/core/util/StringHelper.java
+++ b/src/main/java/org/olat/core/util/StringHelper.java
@@ -488,23 +488,24 @@ public class StringHelper {
 		if(string == null) return null;
 		if(string.length() == 0) return string;
 		
-		StringBuilder sb = new StringBuilder();
+		StringBuilder sb = new StringBuilder(string.length());
 		char[] charArr = string.toCharArray();
 		int numOfCharacters = charArr.length;
 		for(int i=0; i<numOfCharacters; i++) {
-			char ch = charArr[i];
+			int ch = string.codePointAt(i);
 			if(ch < 32) {
 				switch(ch) {
-					case '\n': sb.append(ch); break;//0x000A
-					case '\t': sb.append(ch); break;//0x0009
-					case '\r': sb.append(ch); break;//0x000D
+					case '\n': //0x000A
+					case '\t': //0x0009
+					case '\r': sb.appendCodePoint(ch); break;//0x000D
+					default: // dump them
 				}
 			} else if(ch >= 0x0020 && ch <= 0xD7FF) {
-				sb.append(ch);
+				sb.appendCodePoint(ch);
 			} else if(ch >= 0xE000 && ch <= 0xFFFD) {
-				sb.append(ch);
+				sb.appendCodePoint(ch);
 			} else if(ch >= 0x10000 && ch <= 0x10FFFF) {
-				sb.append(ch);
+				sb.appendCodePoint(ch);
 			}
 		}
 		return sb.toString();
diff --git a/src/test/java/org/olat/core/util/StringHelperTest.java b/src/test/java/org/olat/core/util/StringHelperTest.java
index b90a0cf7ba5c448a30dc3bb4aa508387f8fa5e36..ed2022dbd4a63ac8823a601e3c21f2e4f46b6eef 100644
--- a/src/test/java/org/olat/core/util/StringHelperTest.java
+++ b/src/test/java/org/olat/core/util/StringHelperTest.java
@@ -139,6 +139,10 @@ public class StringHelperTest {
 		//it's pahlavi \u10B7x
 		String value12 = StringHelper.cleanUTF8ForXml("Hello\u10B7x pahlavi");
 		Assert.assertEquals("Pahlavi test", "Hello\u10B7x pahlavi", value12);
+
+		// smile
+		String value13 = StringHelper.cleanUTF8ForXml("Smile \uD83D\uDE00x");
+		Assert.assertEquals("Smile test", "Smile \uD83D\uDE00x", value13);
 	}
 	
 	@Test