diff --git a/portal-impl/src/com/liferay/portlet/wiki/util/WikiUtil.java b/portal-impl/src/com/liferay/portlet/wiki/util/WikiUtil.java
index 0eb029ccee0490ff4d193ddeadd222344a4d85f1..1389479d1d73b3c0145c2643ca11b30938881621 100644
--- a/portal-impl/src/com/liferay/portlet/wiki/util/WikiUtil.java
+++ b/portal-impl/src/com/liferay/portlet/wiki/util/WikiUtil.java
@@ -122,6 +122,10 @@ public class WikiUtil {
 			new UnsyncStringReader(targetContent));
 	}
 
+	public static String escapeName(String name) {
+		return StringUtil.replace(name, _UNESCAPED_CHARS, _ESCAPED_CHARS);
+	}
+
 	public static List<WikiPage> filterOrphans(List<WikiPage> pages)
 		throws PortalException {
 
@@ -547,6 +551,10 @@ public class WikiUtil {
 		return content;
 	}
 
+	public static String unescapeName(String name) {
+		return StringUtil.replace(name, _ESCAPED_CHARS, _UNESCAPED_CHARS);
+	}
+
 	public static boolean validate(long nodeId, String content, String format)
 		throws WikiFormatException {
 
@@ -732,6 +740,14 @@ public class WikiUtil {
 		return _getEngine(format).validate(nodeId, content);
 	}
 
+	private static final String[] _ESCAPED_CHARS = new String[] {
+		"<PLUS>", "<QUESTION>", "<SLASH>"
+	};
+
+	private static final String[] _UNESCAPED_CHARS = new String[] {
+		StringPool.PLUS, StringPool.QUESTION, StringPool.SLASH
+	};
+
 	private static Log _log = LogFactoryUtil.getLog(WikiUtil.class);
 
 	private static WikiUtil _instance = new WikiUtil();
