2009-09-16 6 views
0

Je viens de découvrir quelque chose comme ceci:chaîne automatique Unicode formatage en Java

String sample = "somejunk+%3cfoobar%3e+morestuff"; 

imprimé, échantillon ressemble à ceci:

somejunk + <foobar> + morestuff

Comment Est-ce que ça fonctionne? U + 003c et U + 003e sont respectivement les codes Unicode pour les signes inférieur et supérieur à, ce qui semble être plus qu'une coïncidence, mais je n'ai jamais entendu parler de Java faisant automatiquement quelque chose comme ça. Je pensais que ce serait une chose facile à faire apparaître dans Google, mais il s'avère que Google n'aime pas le signe de pourcentage.

+2

Java ne fait pas quelque chose comme ça. Il semble que vous ayez une chaîne codée URL. –

+0

Oui, je suppose que vous l'avez vu sur une page Web plutôt que dans un fichier source qui a effectivement compilé :-) –

+0

Comment imprimez-vous et si stdout à quel terminal? – Mark

Répondre

1

Vous pouvez faire quelque chose comme ça,

String sample = "somejunk+%3cfoobar%3e+morestuff"; 
    String result = URLDecoder.decode(sample.replaceAll("\\+", "%2B"), "UTF8"); 
+0

Il s'avère que c'est proche, il était en fait utilisé comme un Wicket ExternalLink dans mon cas. (http://wicket.apache.org/docs/1.4/org/apache/wicket/markup/html/link/ExternalLink.html) – Pops

2

Cette chaîne est probablement URL encoded Vous souhaitez que décodez java en utilisant le URLDecoder

String res = java.net.URLDecoder.decode(sample, "UTF8"); 
1

Java ne supporte Unicode échappe à char et String littéraux , mais pas l'encodage d'URL. Les échappements Unicode utilisent '\uXXXX', où XXXX est le point Unicode en hexadécimal.

Petite tidbit curieuse: La grammaire permet 'u' de se produire plusieurs fois, de sorte que '\uuuuuuuu0041' est un échappement Unicode valide (pour 'A').

+0

+1 pour l'information curieuse. – Pops