java.net.URLEncoder.encode(String) ist veraltet, was soll ich stattdessen verwenden?

Lesezeit: 3 Minuten

Benutzer-Avatar
Frank Krüger

Bei der Verwendung erhalte ich die folgende Warnung java.net.URLEncoder.encode:

warning: [deprecation] encode(java.lang.String)
         in java.net.URLEncoder has been deprecated

Was sollte ich stattdessen verwenden?

Benutzer-Avatar
Will Wagner

Verwenden Sie das andere encode Methode ein URLEncoder:

URLEncoder.encode(String, String)

Der erste Parameter ist der zu kodierende Text; der zweite ist der Name der zu verwendenden Zeichencodierung (z. B. UTF-8). Zum Beispiel:

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

  • @jsh: Ich bin verwirrt, warum sollte es keinen URLDecoder geben? Warum wird Java dadurch aufgebläht? Dies sind statische Methoden. Es würde den gleichen Aufwand erfordern, beide zu tippen. Wenn Sie Python mögen, warum programmieren Sie in Java? Liegt es daran, dass mehr Leute Java als Python verwenden und Sie einen Java-Job anstelle eines Python-Jobs bekommen haben?

    – stepanisch

    27. Februar 2012 um 9:07 Uhr


  • Er nennt es aufgebläht, weil es den globalen Klassennamensraum überfüllt. Warum haben Sie URLEncoder.encode und URLDecoder.decode, wenn Sie URL.encode und URL.decode oder sogar nur URLEncoder.decode haben könnten? Warum alles überflüssig und aufgebläht machen? Weil es Java ist.

    – BT

    17. September 2012 um 22:34 Uhr

  • Und dann müssen Sie die UnsupportedEncodingException behandeln, obwohl UTF-8 so ziemlich überall unterstützt werden sollte.

    – David Cameron

    2. Januar 2013 um 5:37 Uhr

  • @tc.: Java 7 hat diese Konstanten eingeführt: StandardCharsets.US_ASCII, StandardCharsets.UTF_8 usw. Leider URLEncoder.encode akzeptiert nicht a Charset… (aber viele andere Methoden tun es).

    – schleske

    29. Mai 2013 um 8:34 Uhr

  • Kleiner Vorschlag – verwenden URLEncoder.encode(<urlStringToBeEncoded>, StandardCharsets.UTF_8.name()). Verwenden der statischen Konstante UTF_8‘s toString() -Methode, wie das Zeichencodierungsschema auslöst java.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8] als die toString() gibt “java.nio.charset.CharsetICU[UTF-8]”. Um das gewünschte “UTF-8” zu erhalten, verwenden Sie seine name() Methode statt.

    – et_l

    24. Mai 2017 um 11:40 Uhr


Benutzer-Avatar
Atul Darne

Du solltest benutzen:

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

Benutzer-Avatar
Jörgesys

Verwenden Sie die Klasse URLEncoder:

URLEncoder.encode(String s, String enc)

Wo :

s – Zu übersetzender String.

enc – Der Name eines unterstützten Zeichenkodierung.

Standardzeichensätze:

US-ASCII Sieben-Bit-ASCII, auch bekannt als ISO646-US, auch bekannt als Basic Latin Block des Unicode-Zeichensatzes ISO-8859-1 ISO Latin Alphabet Nr. 1, auch bekannt als ISO-LATIN-1

UTF-8 Acht-Bit-UCS-Transformationsformat

UTF-16BE Sechzehn-Bit-UCS-Transformationsformat, Big-Endian-Byte-Reihenfolge

UTF-16LE Sechzehn-Bit-UCS-Transformationsformat, Little-Endian-Byte-Reihenfolge

UTF-16 Sechzehn-Bit-UCS-Transformationsformat, Byte-Reihenfolge, die durch eine optionale Byte-Reihenfolge-Markierung identifiziert wird

Beispiel:

import java.net.URLEncoder;

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

Der erste Parameter ist der zu kodierende String; der zweite ist der Name der zu verwendenden Zeichenkodierung (z. B. UTF-8).

Die Verwendung von org.apache.commons.httpclient.URI ist nicht unbedingt ein Problem; Was ein Problem ist, ist, dass Sie auf den falschen Konstruktor abzielen, which ist abgeschrieben.

Nur verwenden

new URI( [string] );

Wird es tatsächlich als abgeschrieben markieren. Was benötigt wird, ist mindestens ein zusätzliches Argument (das erste, unten) und idealerweise zwei:

  1. escaped: wahr, wenn die URI-Zeichenfolge in Escape-Form vorliegt. falsch sonst.
  2. charset: der Zeichensatz für die Escape-Codierung, falls erforderlich

Dies zielt auf einen nicht abgeschriebenen Konstruktor innerhalb dieser Klasse ab. Eine ideale Verwendung wäre also:

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

Ein bisschen verrückt – spät im Spiel (ein Haar über 11 Jahre später – eig!), aber ich hoffe, das hilft jemand anderem, besonders wenn die Methode am anderen Ende ist still erwartet einen URI, wie z org.apache.commons.httpclient.setURI().

Als zusätzliche Referenz für die anderen Antworten, anstatt zu verwenden “UTF-8” Sie können verwenden:

HTTP.UTF_8

die seit Java 4 als Teil der org.apache.http.protocol-Bibliothek enthalten ist, die auch seit Android API 1 enthalten ist.

1355270cookie-checkjava.net.URLEncoder.encode(String) ist veraltet, was soll ich stattdessen verwenden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy