Kullanırken aşağıdaki uyarıyı alıyorum java.net.URLEncoder.encode
:
uyarı: [kullanımdan kaldırma] kodlaması (java.lang.String) java.net.URLEncoder kullanımdan kaldırıldı
Bunun yerine ne kullanmalıyım?
Kullanırken aşağıdaki uyarıyı alıyorum java.net.URLEncoder.encode
:
uyarı: [kullanımdan kaldırma] kodlaması (java.lang.String) java.net.URLEncoder kullanımdan kaldırıldı
Bunun yerine ne kullanmalıyım?
Yanıtlar:
URLEncoder'daki diğer encode
yöntemi kullanın :
URLEncoder.encode(String, String)
İlk parametre kodlanacak metindir; ikincisi, kullanılacak karakter kodlamasının adıdır (örn UTF-8
.). Örneğin:
System.out.println(
URLEncoder.encode(
"urlParameterString",
java.nio.charset.StandardCharsets.UTF_8.toString()
)
);
StandardCharsets.US_ASCII
, StandardCharsets.UTF_8
maalesef vb URLEncoder.encode
bir kabul etmez Charset
... (ama birçok diğer moethods yapmak).
URLEncoder.encode(<urlStringToBeEncoded>, StandardCharsets.UTF_8.name())
. Statik sabit kullanılması UTF_8
sitesindeki toString()
karakter kodlama şeması gibi bir yöntem atar java.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]
şekilde toString()
geri dönüş 'java.nio.charset.CharsetICU [UTF-8]'. İstenen "UTF-8" i elde etmek için bunun name()
yerine yöntemini kullanın.
Kullanmalısın:
URLEncoder.encode("NAME", "UTF-8");
URLEncoder sınıfını kullanın :
URLEncoder.encode(String s, String enc)
Nerede :
s - Çevrilecek dize.
enc - Desteklenen bir karakter kodlamasının adı .
Standart karakter setleri:
US-ASCII Yedi bit ASCII, aka ISO646-US, aka Unicode karakter kümesinin Temel Latin bloğu ISO-8859-1 ISO Latin Alfabesi No. 1, aka ISO-LATIN-1
UTF-8 Sekiz Bit UCS Dönüşüm Formatı
UTF-16BE Onaltı-bit UCS Dönüşüm Formatı, big-endian bayt sırası
UTF-16LE Onaltı-bit UCS Dönüşüm Biçimi, küçük endian bayt sırası
UTF-16 Onaltı-bit UCS Dönüşüm Biçimi, isteğe bağlı bayt sırası işaretiyle tanımlanan bayt sırası
Misal:
import java.net.URLEncoder;
String stringEncoded = URLEncoder.encode(
"This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8");
İlk parametre kodlanacak String'dir; ikincisi, kullanılacak karakter kodlamasının adıdır (örneğin, UTF-8).
Diğer yanıtlar için ek bir referans olarak, "UTF-8" kullanmak yerine şunları kullanabilirsiniz:
HTTP.UTF_8
Java 4'ten beri org.apache.http.protocol kütüphanesinin bir parçası olarak dahil edilmiştir ve Android API 1'den beri de dahil edilmiştir.
org.apache.http.protocol.HTTP
sınıfında bulunur.
Kullanımı org.apache.commons.httpclient.URI
kesinlikle bir sorun değildir; önemli olan , amortismana tabi tutulan yanlış kurucuyu hedeflemenizdir .
Sadece
new URI( [string] );
Will gerçekten amortisman olarak işaretler. Gerekli olan en az bir ek argüman (ilk, aşağıda) ve ideal olarak iki sağlamaktır:
escaped
: URI karakter dizisi kaçış biçimindeyse true. aksi takdirde yanlış.charset
: gerekirse kodlamadan kaçmak için karakter dizisiBu, o sınıftaki amortismana tabi olmayan bir kurucuyu hedef alacaktır. Dolayısıyla ideal bir kullanım şöyle olur:
new URI( [string], true, StandardCharsets.UTF_8.toString() );
Oyunda biraz deli-geç (11 yıl sonra bir saç - egad! ), Ama umarım bu başka birine yardımcı olur, özellikle uzaktaki yöntem hala bir URI bekliyorsa org.apache.commons.httpclient.setURI()
.