By Alvin Alexander. Last updated: June 3, 2016
Here's the source code for a Java method that converts a given String into an equivalent new String, where characters that cause problems when rendered as HTML have been converted to their ISO Latin equivalent:
/** * Convert extended characters to ISO-Latin equivalents. * Might be improved by using a HashMap to map the key/values. * However, I'm currently limited to a JDK1.1.x environment, not JDK2. */ public static String convertExtendedCharactersToIsoLatin(String input) { StringBuffer buffer = new StringBuffer(input); StringBuffer output = new StringBuffer(); int length = buffer.length(); for (int i = 0; i < length; i++) { if (buffer.charAt(i) == '"') output.append("""); else if (buffer.charAt(i) == '!') output.append("!"); else if (buffer.charAt(i) == '#') output.append("#"); else if (buffer.charAt(i) == '&') output.append("&"); else if (buffer.charAt(i) == '\'') output.append("'"); else if (buffer.charAt(i) == '(') output.append("("); else if (buffer.charAt(i) == ')') output.append(")"); else if (buffer.charAt(i) == '*') output.append("*"); else if (buffer.charAt(i) == '+') output.append("+"); else if (buffer.charAt(i) == ',') output.append(","); else if (buffer.charAt(i) == '-') output.append("-"); else if (buffer.charAt(i) == '.') output.append("."); else if (buffer.charAt(i) == '/') output.append("/"); else if (buffer.charAt(i) == ':') output.append(":"); else if (buffer.charAt(i) == ';') output.append(";"); else if (buffer.charAt(i) == '<') output.append("<"); else if (buffer.charAt(i) == '=') output.append("="); else if (buffer.charAt(i) == '>') output.append(">"); else if (buffer.charAt(i) == '?') output.append("?"); else if (buffer.charAt(i) == '@') output.append("@"); else if (buffer.charAt(i) == '[') output.append("["); else if (buffer.charAt(i) == '\\') output.append("\"); else if (buffer.charAt(i) == ']') output.append("]"); else if (buffer.charAt(i) == '^') output.append("^"); else if (buffer.charAt(i) == '_') output.append("_"); else if (buffer.charAt(i) == '`') output.append("`"); else if (buffer.charAt(i) == '{') output.append("{"); else if (buffer.charAt(i) == '|') output.append("|"); else if (buffer.charAt(i) == '}') output.append("}"); else if (buffer.charAt(i) == '~') output.append("~"); else output.append(buffer.charAt(i)); } return output.toString(); }
Note: Looking at this code a few year's later I don't know why I didn't write this using a 2D array and a simpler loop, but in the end, it works, and performance hasn't been an issue.