web-dev-qa-db-fra.com

Comment pouvez-vous décompresser les URL en Java?

Lorsque je lis le XML via InputStream d’une URL, puis que je coupe tout sauf l’URL, j’obtiens " http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-% 20Tu% 20Bin% 20Bataye.mp3 ".

Comme vous pouvez le constater, il y a beaucoup de "% 20".

Je veux que l'URL ne soit pas échappé.

Est-il possible de faire cela en Java, sans utiliser une bibliothèque tierce?

32
Penchant

Ce n'est pas un XML non échappé, c'est un 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. Le résultat du décodage similaire à celui que vous avez fourni est le suivant.

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.

55
ng.

URLDecoder.decode(String s) est obsolète depuis Java 5

Vous devriez 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 World Wide Web Consortium indique que UTF-8 doit être utilisé. Ne pas le faire peut introduire des incompatibilités.

5
freedev

J'ai des problèmes pour utiliser cette méthode lorsque j'ai des caractères spéciaux tels que á, é, í, etc. Mon estimation (probablement sauvage) est que widechars ne sont pas codé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: Encodage d'URI dans UNICODE pour Apache httpclient 4

0
Mario