java.net.URLEncoder.encode(String) is verouderd, wat moet ik in plaats daarvan gebruiken?

Ik krijg de volgende waarschuwing wanneer ik java.net.URLEncoder.encodegebruik:

waarschuwing: [beëindiging] encode(java.lang.String)
     in java.net.URLEncoder is verouderd

Wat moet ik in plaats daarvan gebruiken?


Antwoord 1, autoriteit 100%

Gebruik de andere encode-methode in URLEncoder:

URLEncoder.encode(String, String)

De eerste parameter is de tekst die moet worden gecodeerd; de tweede is de naam van de te gebruiken tekencodering (bijv. UTF-8). Bijvoorbeeld:

System.out.println(
  URLEncoder.encode(
    "urlParameterString",
    java.nio.charset.StandardCharsets.UTF_8.toString()
  )
);

Antwoord 2, autoriteit 12%

U moet gebruiken:

URLEncoder.encode("NAME", "UTF-8");

Antwoord 3, autoriteit 10%

Gebruik de klasse URLEncoder:

URLEncoder.encode(String s, String enc)

Waar:

s– Tekenreeks die moet worden vertaald.

enc– De naam van een ondersteunde tekencodering.

Standaard tekensets:

US-ASCIISeven-bit ASCII, ook bekend als ISO646-US, ook bekend als het Latijnse basisblok van de Unicode-tekenset
ISO-8859-1 ISO Latijns alfabet nr. 1, ook bekend als ISO-LATIN-1

UTF-8Acht-bit UCS-transformatie-indeling

UTF-16BEZestien-bits UCS-transformatieformaat, big-endian bytevolgorde

UTF-16LEZestien-bits UCS-transformatieformaat, little-endian bytevolgorde

UTF-16Zestien-bits UCS-transformatieformaat, bytevolgorde geïdentificeerd door een optionele byte-volgordemarkering

Voorbeeld:

import java.net.URLEncoder;
String stringEncoded = URLEncoder.encode(
    "This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8");

Antwoord 4

De eerste parameter is de tekenreeks die moet worden gecodeerd; de tweede is de naam van de te gebruiken tekencodering (bijv. UTF-8).


Antwoord 5

Het gebruik van org.apache.commons.httpclient.URIis niet strikt een probleem; het probleem is dat u zich op de verkeerde constructor richt, die wordtafgeschreven.

Alleen

. gebruiken

new URI( [string] );

Zal het inderdaad als afgeschreven markeren. Wat nodig is, is om minimaal één extra argument te geven (de eerste, hieronder), en idealiter twee:

  1. escaped: waar als de URI-tekenreeks in escape-vorm is. anders vals.
  2. charset: de tekenreeks voor escape-codering, als
    vereist

Dit is gericht op een niet-afgeschreven constructor binnen die klasse. Dus een ideaal gebruik zou als volgt zijn:

new URI( [string], true, StandardCharsets.UTF_8.toString() );

Een beetje idioot laat in het spel (meer dan 11 jaar later – egad!), maar ik hoop dat dit iemand anders helpt, vooral als de methode aan het einde is nog steedseen URI verwacht, zoals org.apache.commons.httpclient.setURI().


Antwoord 6

Als aanvullende referentie voor de andere reacties kunt u in plaats van “UTF-8”gebruiken:

HTTP.UTF_8

die sinds Java 4 is opgenomen als onderdeel van de bibliotheek org.apache.http.protocol, die ook is opgenomen sinds Android API 1.

Other episodes