Comment pouvez-vous décompresser les URL en Java?
-
05-07-2019 - |
Question
Lorsque je lis le XML par le biais du flux InputStream d'une URL, puis que je coupe tout sauf l'URL, je reçois un http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20T%%Bin%20Binant % 20Bataye.mp3 " ;.
Comme vous pouvez le constater, il y a beaucoup de "% 20".
Je veux que l'URL ne soit pas échappé.
Existe-t-il un moyen de le faire en Java sans utiliser de bibliothèque tierce?
La solution
Ce n'est pas du XML non échappé, c'est du texte encodé en URL. Il me semble que vous souhaitez utiliser les éléments suivants dans les chaînes d'URL.
URLDecoder.decode(url);
Cela vous donnera le texte correct. Voici le résultat du décodage similaire à celui que vous avez fourni.
http://cliveg.bu.edu/people/sganguly/player/ Rang De Basanti - Tu Bin Bataye.mp3
Le% 20 est un caractère espace échappé. Pour obtenir ce qui précède, j'ai utilisé l'objet URLDecoder.
Autres conseils
URLDecoder.decode (String s)
est obsolète depuis Java 5
Vous devez utiliser URLDecoder.decode (String s, String enc)
.
Par exemple:
URLDecoder.decode(url, "UTF-8")
En ce qui concerne l'encodage à utiliser:
Remarque: La Recommandation du Consortium World Wide Web indique que UTF-8 doit être utilisé. Ne pas le faire peut introduire des incompatibilités.
J'ai des problèmes pour utiliser cette méthode lorsque des caractères spéciaux tels que & # 225;
, & # 233;
, & # 237;
, etc. Mon estimation (probablement sauvage) est que les widechars ne sont pas encodés correctement ... du moins, je m'attendais au moins à voir des séquences telles que % uC2BF
au lieu de % C2% BF
.
Édité: My bad, cet article explique la différence entre l'encodage d'URL et les séquences d'échappement JavaScript: Codage URI dans UNICODE pour Apache httpclient 4