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?
java
url
network-programming
deprecated
Frank Krueger
sumber
sumber
Jawaban:
Gunakan
encode
metode lain di URLEncoder :Parameter pertama adalah teks yang akan dikodekan; yang kedua adalah nama pengkodean karakter untuk digunakan (misalnya,
UTF-8
). Sebagai contoh:sumber
StandardCharsets.US_ASCII
,StandardCharsets.UTF_8
dll Sayangnya,URLEncoder.encode
tidak menerimaCharset
... (tapi banyak moethods lain lakukan).URLEncoder.encode(<urlStringToBeEncoded>, StandardCharsets.UTF_8.name())
. Menggunakan statis konstanUTF_8
'stoString()
metode sebagai skema pengkodean karakter melemparjava.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]
sebagaitoString()
hasil 'java.nio.charset.CharsetICU [UTF-8]'. Untuk mendapatkan "UTF-8" yang diinginkan, gunakanname()
metode ini.Kamu harus menggunakan:
sumber
Gunakan kelas URLEncoder :
Dimana:
Rangkaian standar:
Contoh:
sumber
Parameter pertama adalah String untuk disandikan; yang kedua adalah nama pengkodean karakter yang akan digunakan (misalnya, UTF-8).
sumber
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.
sumber
org.apache.http.protocol.HTTP
kelas perpustakaan Apache HttpClient 4.x.Penggunaan
org.apache.commons.httpclient.URI
tidak sepenuhnya merupakan masalah; apa masalah adalah bahwa Anda menargetkan konstruktor yang salah, yang adalah disusutkan.Menggunakan adil
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:
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()
.sumber