diff --git a/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java b/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java
index 52c9c5c..733946e 100755
--- a/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java
@@ -62,19 +62,6 @@
 	/** A table of hex digits */
 	private static final char[] HEX_DIGIT = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
 			'A', 'B', 'C', 'D', 'E', 'F' };
-	private static final Set<Character> NONCHARACTERS = Collections.unmodifiableSet(new HashSet<Character>()
-	{
-		private static final long serialVersionUID = 1L;
-
-		{
-			for (int i = 0x0000FDD0; i <= 0x0000FDEF; ++i)
-			{
-				add((char)i);
-			}
-			add((char)0x0000FFFE);
-			// all other non-characters are out of range of (char)
-		}
-	});
 
 	private static final Pattern HTML_NUMBER_REGEX = Pattern.compile("&#\\d+;");
 	
@@ -336,7 +323,7 @@
 		{
 			final char c = s.charAt(i);
 
-			if (NONCHARACTERS.contains(c))
+			if (Character.getType(c) == Character.UNASSIGNED)
 			{
 				continue;
 			}
@@ -1020,7 +1007,7 @@
 	 */
 	public static String toEscapedUnicode(final String unicodeString)
 	{
-		if ((unicodeString == null) || (unicodeString.length() == 0))
+		if (unicodeString == null || unicodeString.isEmpty())
 		{
 			return unicodeString;
 		}
@@ -1030,7 +1017,7 @@
 		for (int x = 0; x < len; x++)
 		{
 			char aChar = unicodeString.charAt(x);
-			if (NONCHARACTERS.contains(aChar))
+			if (Character.getType(aChar) == Character.UNASSIGNED)
 			{
 				continue;
 			}
diff --git a/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java b/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java
index bb0fa39..47a0ec0 100644
--- a/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java
+++ b/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java
@@ -459,7 +459,7 @@
 	@Test
 	public void testNonchar()
 	{
-		assertEquals("", Strings.escapeMarkup("\ufffe\uFDDF\uFDE0").toString());
-		assertEquals("", Strings.toEscapedUnicode("\ufffe\uFDDF\uFDE0"));
+		assertEquals("", Strings.escapeMarkup("\ufffe\uFDDF\uFDE0\uFDD0\uFDEF").toString());
+		assertEquals("", Strings.toEscapedUnicode("\ufffe\uFDDF\uFDE0\uFDD0\uFDEF"));
 	}
 }
