Saya mendapatkan peringatan berikut saat menggunakan java.net.URLEncoder.encode:
peringatan: [deprecation] encode (java.lang.String)
di java.net.URLEncoder telah ditinggalkan
Apa yang harus saya gunakan?
Saya mendapatkan peringatan berikut saat menggunakan java.net.URLEncoder.encode:
peringatan: [deprecation] encode (java.lang.String)
di java.net.URLEncoder telah ditinggalkan
Apa yang harus saya gunakan?
Jawaban:
Gunakan encodemetode lain di URLEncoder :
URLEncoder.encode(String, String)
Parameter pertama adalah teks yang akan dikodekan; yang kedua adalah nama pengkodean karakter untuk digunakan (misalnya, UTF-8). Sebagai contoh:
System.out.println(
URLEncoder.encode(
"urlParameterString",
java.nio.charset.StandardCharsets.UTF_8.toString()
)
);
StandardCharsets.US_ASCII, StandardCharsets.UTF_8dll Sayangnya, URLEncoder.encodetidak menerima Charset... (tapi banyak moethods lain lakukan).
URLEncoder.encode(<urlStringToBeEncoded>, StandardCharsets.UTF_8.name()). Menggunakan statis konstan UTF_8's toString()metode sebagai skema pengkodean karakter melempar java.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]sebagai toString()hasil 'java.nio.charset.CharsetICU [UTF-8]'. Untuk mendapatkan "UTF-8" yang diinginkan, gunakan name()metode ini.
Kamu harus menggunakan:
URLEncoder.encode("NAME", "UTF-8");
Gunakan kelas URLEncoder :
URLEncoder.encode(String s, String enc)
Dimana:
s - String yang akan diterjemahkan.
enc - Nama pengkodean karakter yang didukung .
Rangkaian standar:
US-ASCII Seven-bit ASCII, alias ISO646-AS, alias blok Latin Dasar dari karakter Unicode mengatur ISO-8859-1 ISO Latin Alphabet No. 1, alias ISO-LATIN-1
UTF-8 Delapan-bit Format Transformasi UCS
UTF-16BE Enam belas-bit Format Transformasi UCS, urutan byte big-endian
UTF-16LE Format Transformasi UCS Enam Belas-bit, urutan byte-endian kecil
UTF-16 Enam belas-bit UCS Transformation Format, urutan byte diidentifikasi oleh tanda urutan byte opsional
Contoh:
import java.net.URLEncoder;
String stringEncoded = URLEncoder.encode(
"This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8");
Parameter pertama adalah String untuk disandikan; yang kedua adalah nama pengkodean karakter yang akan digunakan (misalnya, UTF-8).
Sebagai referensi tambahan untuk respons lain, alih-alih menggunakan "UTF-8" Anda dapat menggunakan:
HTTP.UTF_8
yang disertakan sejak Java 4 sebagai bagian dari pustaka org.apache.http.protocol, yang disertakan juga sejak Android API 1.
org.apache.http.protocol.HTTPkelas perpustakaan Apache HttpClient 4.x.
Penggunaan org.apache.commons.httpclient.URItidak sepenuhnya merupakan masalah; apa masalah adalah bahwa Anda menargetkan konstruktor yang salah, yang adalah disusutkan.
Menggunakan adil
new URI( [string] );
Memang akan menandai itu sebagai disusutkan. Yang diperlukan adalah menyediakan setidaknya satu argumen tambahan (yang pertama, di bawah), dan idealnya dua:
escaped: true jika urutan karakter URI dalam bentuk escaped. salah kalau tidak.charset: string charset untuk melakukan escape encoding, jika perluIni akan menargetkan konstruktor yang tidak disusutkan di dalam kelas itu. Jadi penggunaan yang ideal adalah seperti itu:
new URI( [string], true, StandardCharsets.UTF_8.toString() );
Agak gila di akhir permainan (rambut lebih dari 11 tahun kemudian - egad! ), Tapi saya harap ini membantu orang lain, terutama jika metode di ujung masih mengharapkan URI, seperti org.apache.commons.httpclient.setURI().