I am trying to replace character encodings in URL’s to no avail, I have scouted around the internet but have only found outdated libraries and answers.
JavaScript
x
import java.io.*;
import java.util.*;
public class Chapter6 {
public static void main(String[] args) throws FileNotFoundException{
Scanner input = new Scanner(new File("BCwebSiteHTML.txt"));
System.out.println("Total Count: " + countHref(input));
}
public static int countHref(Scanner s) {
int count = 0;
while(s.hasNext()) {
String token = s.next();
if(token.contains("href="")) {
count++;
token = fixHTML(token);
System.out.println(token.substring(6, token.length() - 1));
}
}
return count;
}
public static String fixHTML(String data) {
data = data.replace("%20", " ");
data = data.replace("%21", "!");
data = data.replace("%22", """);
data = data.replace("%23", "#");
data = data.replace("%24", "$");
data = data.replace("%25", "%");
data = data.replace("%26", "&");
data = data.replace("%27", "'");
data = data.replace("%28", "(");
data = data.replace("%29", ")");
data = data.replace("%2A", "*");
data = data.replace("%2B", "+");
data = data.replace("%2C", ",");
data = data.replace("%2D", "-");
data = data.replace("%2E", ".");
data = data.replace("%2F", "/");
data = data.replace("%30", "0");
data = data.replace("%31", "1");
data = data.replace("%32", "2");
data = data.replace("%33", "3");
data = data.replace("%34", "4");
data = data.replace("%35", "5");
data = data.replace("%36", "6");
data = data.replace("%37", "7");
data = data.replace("%38", "8");
data = data.replace("%39", "9");
data = data.replace("%3A", ":");
data = data.replace("%3B", ";");
data = data.replace("%3C", "<");
data = data.replace("%3D", "=");
data = data.replace("%3E", ">");
data = data.replace("%3F", "?");
data = data.replace("%40", "@");
data = data.replace("%41", "A");
data = data.replace("%42", "B");
data = data.replace("%43", "C");
data = data.replace("%44", "D");
data = data.replace("%45", "E");
data = data.replace("%46", "F");
data = data.replace("%47", "G");
data = data.replace("%48", "H");
data = data.replace("%49", "I");
data = data.replace("%4A", "J");
data = data.replace("%4B", "K");
data = data.replace("%4C", "L");
data = data.replace("%4D", "M");
data = data.replace("%4E", "N");
data = data.replace("%4F", "O");
data = data.replace("%50", "P");
data = data.replace("%51", "Q");
data = data.replace("%52", "R");
data = data.replace("%53", "S");
data = data.replace("%54", "T");
data = data.replace("%55", "U");
data = data.replace("%56", "V");
data = data.replace("%57", "W");
data = data.replace("%58", "X");
data = data.replace("%59", "Y");
data = data.replace("%5A", "Z");
data = data.replace("%5B", "[");
data = data.replace("%5C", "\");
data = data.replace("%5D", "]");
data = data.replace("%5E", "^");
data = data.replace("%5F", "_");
data = data.replace("%60", "`");
data = data.replace("%61", "a");
data = data.replace("%62", "b");
data = data.replace("%63", "c");
data = data.replace("%64", "d");
data = data.replace("%65", "e");
data = data.replace("%66", "f");
data = data.replace("%67", "g");
data = data.replace("%68", "h");
data = data.replace("%69", "i");
data = data.replace("%6A", "j");
data = data.replace("%6B", "k");
data = data.replace("%6C", "l");
data = data.replace("%6D", "m");
data = data.replace("%6E", "n");
data = data.replace("%6F", "o");
data = data.replace("%70", "p");
data = data.replace("%71", "q");
data = data.replace("%72", "r");
data = data.replace("%73", "s");
data = data.replace("%74", "t");
data = data.replace("%75", "u");
data = data.replace("%76", "v");
data = data.replace("%77", "w");
data = data.replace("%78", "x");
data = data.replace("%79", "y");
data = data.replace("%7A", "z");
data = data.replace("%7B", "{");
data = data.replace("%7C", "|");
data = data.replace("%7D", "}");
data = data.replace("%7E", "~");
data = data.replace("%80", "`");
return data;
}
}
For example, https://fonts.googleapis.com/css?family=Noto+Serif%3A400%2C400i%2C700%2C700i&ver=5.3.4 would become https://fonts.googleapis.com/css?family=Noto+Serif:400,400i,700,700i&ver=5.3.4
The code shown above works, but there must be a more concise way of doing this, right? That’s the question
Advertisement
Answer
Actually, you can use java.net.URLDecoder
JavaScript
data = URLDecoder.decode(data);