Back out fix for Bug 338028 from 3.5 maintenance stream
diff --git a/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/UrlUtil.java b/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/UrlUtil.java
index e0d7477..ddd01e5 100644
--- a/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/UrlUtil.java
+++ b/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/data/UrlUtil.java
@@ -32,9 +32,15 @@
 import org.eclipse.help.internal.HelpPlugin;
 import org.eclipse.help.internal.base.BaseHelpSystem;
 import org.eclipse.help.internal.base.HelpBasePlugin;
+import org.eclipse.help.internal.base.util.TString;
 import org.eclipse.help.internal.util.ProductPreferences;
 
 public class UrlUtil {
+	// XML escaped characters mapping
+	private static final String invalidXML[] = {"&", ">", "<", "\"", "'"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+	// Note that we have to use &#39; instead of &apos; because &apos; does not work in all versions of IE
+	private static final String escapedXML[] = {
+			"&amp;", "&gt;", "&lt;", "&quot;", "&#39;"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
 
 	// for Safari build 125.1 finds version 125
 	static final Pattern safariPattern = Pattern.compile(
@@ -95,33 +101,9 @@
 			return null;
 		}
 
-		StringBuffer result = new StringBuffer();
-		for (int i = 0 ; i < str.length(); i++) {
-			appendEncodedChar(result, str.charAt(i));
-		}
-		return result.toString();
-	}
-
-	private static void appendEncodedChar(StringBuffer result, char ch) {
-		if (needsEncoding(ch)) {
-			int chInt = ch;
-			result.append("&#" + chInt + ';'); //$NON-NLS-1$
-			return;
-		}
-		result.append(ch);		
-	}
-
-	private static boolean needsEncoding(char ch) {
-		if (ch > 255) {
-			return false;
-		}
-		if (Character.isLetterOrDigit(ch)) {
-			return false;
-		}
-		if ( ch == ' ' || ch == '_') {
-			return false;
-		}
-		return true;
+		for (int i = 0; i < invalidXML.length; i++)
+			str = TString.change(str, invalidXML[i], escapedXML[i]);
+		return str;
 	}
 
 	public static boolean isLocalRequest(HttpServletRequest request) {