Formattazione automatica delle stringhe Unicode in Java
-
07-07-2019 - |
Domanda
Mi sono appena imbattuto in qualcosa del genere:
String sample = "somejunk+%3cfoobar%3e+morestuff";
Stampato, il campione è simile al seguente:
somejunk +
<foobar
gt &; + Morestuff
Come funziona? U + 003c e U + 003e sono i codici Unicode per i segni minore e maggiore, rispettivamente, che sembrano più di una coincidenza, ma non ho mai sentito parlare di Java fare automaticamente qualcosa del genere. Ho pensato che sarebbe stato facile entrare in Google, ma risulta che a Google non piace il segno di percentuale.
Soluzione
Puoi fare qualcosa del genere,
String sample = "somejunk+%3cfoobar%3e+morestuff";
String result = URLDecoder.decode(sample.replaceAll("\\+", "%2B"), "UTF8");
Altri suggerimenti
Quella stringa è probabilmente URL codificato Dovresti decodificarlo in java usando il URLDecoder
String res = java.net.URLDecoder.decode(sample, "UTF8");
Java supporta gli escape Unicode in char
e String
valori letterali, ma non la codifica URL.
Le escape Unicode usano '\uXXXX'
, dove XXXX è il punto Unicode in esadecimale.
Curiosità: la grammatica consente a 'u'
di verificarsi più volte, in modo che '\uuuuuuuu0041'
sia una fuga Unicode valida (per 'A'
).