उपयोग करते समय मुझे निम्नलिखित चेतावनी मिलती है java.net.URLEncoder.encode
:
चेतावनी: [पदावनति] सांकेतिक शब्दों में बदलना (java.lang.String) java.net.URLEncoder में पदावनत कर दिया गया है
इसके बजाय मुझे क्या उपयोग करना चाहिए?
उपयोग करते समय मुझे निम्नलिखित चेतावनी मिलती है java.net.URLEncoder.encode
:
चेतावनी: [पदावनति] सांकेतिक शब्दों में बदलना (java.lang.String) java.net.URLEncoder में पदावनत कर दिया गया है
इसके बजाय मुझे क्या उपयोग करना चाहिए?
जवाबों:
URLEncoderencode
में अन्य विधि का उपयोग करें :
URLEncoder.encode(String, String)
पहला पैरामीटर एनकोड करने का टेक्स्ट है; दूसरा वर्ण एन्कोडिंग का नाम है (जैसे, UTF-8
) का उपयोग करने के लिए । उदाहरण के लिए:
System.out.println(
URLEncoder.encode(
"urlParameterString",
java.nio.charset.StandardCharsets.UTF_8.toString()
)
);
StandardCharsets.US_ASCII
, StandardCharsets.UTF_8
दुर्भाग्य से, URLEncoder.encode
स्वीकार नहीं करता है Charset
... (लेकिन कई अन्य moethods करते हैं)।
URLEncoder.encode(<urlStringToBeEncoded>, StandardCharsets.UTF_8.name())
। स्थिर निरंतर का उपयोग UTF_8
के toString()
वर्ण एन्कोडिंग योजना के रूप में विधि फेंकता java.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]
के रूप में toString()
रिटर्न "java.nio.charset.CharsetICU [UTF-8]"। वांछित "UTF-8" प्राप्त करने के लिए इसकी name()
विधि का उपयोग करें।
आपको उपयोग करना चाहिए:
URLEncoder.encode("NAME", "UTF-8");
वर्ग URLEncoder का उपयोग करें :
URLEncoder.encode(String s, String enc)
कहाँ पे :
s - स्ट्रिंग का अनुवाद किया जाना है।
एन्क - एक समर्थित वर्ण एन्कोडिंग का नाम ।
मानक वर्ण:
US-ASCII सेवन-बिट ASCII, उर्फ ISO646-US, उर्फ यूनिकोड वर्ण का बेसिक लैटिन ब्लॉक सेट ISO-8859-1 ISO लैटिन वर्णमाला नंबर 1, उर्फ ISO-LATIN-1
UTF-8 आठ-बिट UCS परिवर्तन प्रारूप
UTF-16BE सोलह-बिट UCS परिवर्तन प्रारूप, बड़ा-एंडियन बाइट क्रम
UTF-16LE सोलह-बिट UCS परिवर्तन प्रारूप, छोटे-एंडियन बाइट क्रम
UTF-16 सोलह-बिट UCS परिवर्तन प्रारूप, बाइट क्रम को वैकल्पिक बाइट-ऑर्डर चिह्न द्वारा पहचाना जाता है
उदाहरण:
import java.net.URLEncoder;
String stringEncoded = URLEncoder.encode(
"This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8");
पहला पैरामीटर एन्कोड करने के लिए स्ट्रिंग है; दूसरा उपयोग करने के लिए वर्ण एन्कोडिंग का नाम है (उदाहरण के लिए, UTF-8)।
अन्य प्रतिक्रियाओं के लिए एक अतिरिक्त संदर्भ के रूप में, "यूटीएफ -8" का उपयोग करने के बजाय आप उपयोग कर सकते हैं:
HTTP.UTF_8
जो Java 4 के बाद से org.apache.http.protocol लाइब्रेरी के भाग के रूप में शामिल है, जो Android API 1 के बाद से भी शामिल है।
org.apache.http.protocol.HTTP
वर्ग में पाया जाता है ।
का उपयोग org.apache.commons.httpclient.URI
सख्ती से एक मुद्दा नहीं है; एक समस्या यह है कि आप गलत निर्माणकर्ता को लक्षित करते हैं, जो कि मूल्यह्रास है।
बस का उपयोग कर
new URI( [string] );
वास्तव में इसे मूल्यह्रास के रूप में चिह्नित करेंगे। न्यूनतम एक अतिरिक्त तर्क (प्रथम, नीचे) और आदर्श रूप से दो प्रदान करने के लिए क्या आवश्यक है:
escaped
: यदि URI वर्ण अनुक्रम बच गए रूप में सत्य है। गलत है अन्यथा।charset
: यदि आवश्यक हो, तो एन्कोडिंग से बचने के लिए चारसेट स्ट्रिंगयह उस वर्ग के भीतर एक गैर-मूल्यह्रास निर्माणकर्ता को लक्षित करेगा। इसलिए एक आदर्श उपयोग इस प्रकार होगा:
new URI( [string], true, StandardCharsets.UTF_8.toString() );
(साल 11 से अधिक बाद में एक बाल - एक खेल में पागल-देर सा ! Egad ), लेकिन मुझे उम्मीद है कि इस किसी और मदद करता है, खासकर अगर अब तक अंत में विधि है अभी भी इस तरह के रूप यूआरआई उम्मीद, org.apache.commons.httpclient.setURI()
।