2009-05-22 9 views
16

में URLEncoder एन्कोड/URLDecoder डीकोड मैं एक अनुप्रयोग और विधियों में URLEncoder/URLDecoder क्लास (java.net.URLEncoder/URLDecoder) का उपयोग करना चाहता हूं: एन्कोड (स्ट्रिंग एस, स्ट्रिंग एन्क)/डीकोड (स्ट्रिंग एस, स्ट्रिंग एन्क), लेकिन मुझे नहीं पता कि स्ट्रिंग तर्क एन्क का मूल्य क्या हो सकता है? मैं "x-www-form-urlencoded" एमआईएम सामग्री प्रकार में एन्कोड/डीकोड करना चाहता हूं। आपकी मदद के लिए धन्यवाद।जावा (एंड्रॉइड)

उत्तर

17

एन्कोडिंग पैरामीटर आपके द्वारा उपयोग किए जा रहे वर्ण एन्कोडिंग है। For example "UTF-8"

+0

तो मुझे इसे इस तरह लिखना है: एन्कोड ("हैलो", "एक्स-www-form-urlencoded") या "x-www-form-urlencoded" के लिए यह एन्कोड ("हैलो", "यूटीएफ -8 ")? –

+0

आपको एन्कोड ("हैलो", "यूटीएफ -8") लिखना है। एक्स-www-form-urlencoded हमेशा परिणाम का प्रकार है। एन्कोडिंग पैरामीटर आपके इनपुट डेटा को संदर्भित करता है। – jgre

+0

आपके उत्तर के लिए धन्यवाद! –

1

JavaDoc सभी विवरण

+0

जावाडॉक में सभी संभावित एन्कोडिंग प्रारूपों का उल्लेख नहीं है और न ही मुझे एक एक ईएनएन से लिंक जो उन्हें सूचीबद्ध कर सकता है। – anon58192932

4

सबसे पहले आप एक 'एक्स-www फार्म-urlencoded' के रूप में सामग्री प्रकार निर्धारित करने की आवश्यकता है। फिर आप जो भी सामग्री एन्कोड करना चाहते हैं, उसे "यूटीएफ -8" का उपयोग करके एन्कोड करें।

उदाहरण के लिए:

करने के लिए सामग्री की स्थापना के लिए 'x-www फार्म-urlencoded':

URL url = new URL("http://www.xyz.com/SomeContext/SomeAction"); <br> 
URLConnection urlConnection = url.openConnection();<br> 
....<br> 
....<br> 
urlConnection.setRequestProperty("Content-type","application/x-www-form-urlencoded"); 


या यदि आप कुछ JSP उपयोग कर रहे हैं तो आप पर निम्नलिखित लिख सकते हैं इसके ऊपर

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><br> 
< META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 


< FORM action="someaction.jsp" enctype="application/x-www-form-urlencoded" name="InputForm" method="POST"> 

और URLEncoder उपयोग करने के लिए:

String encodedString = URLEncoder.encode("hello","UTF-8"); 
+0

मैंने किया है: - एचटीपी पोस्ट पोस्ट = नया एचटीपीपोस्ट ("यूआरएल"); - post.setHeader ("सामग्री-प्रकार", "एप्लिकेशन/एक्स-www-form-urlencoded"); - स्ट्रिंग एन्कोडेडस्ट्रिंग = URLEncoder।सांकेतिक शब्दों में बदलना ("हैलो", "UTF-8"); - स्ट्रिंग एंटीटी टेम्प; - temp.setContentEncoding (एन्कोडेड स्ट्रिंग); - post.setEntity (temp); और फिर तर्क के लिए पोस्ट के साथ एक डिफ़ॉल्टHttpClient निष्पादित करें। –

+0

आपके उत्तर के लिए धन्यवाद! –

+0

आशा है कि अब यह काम कर रहा है! – Sourabh

0

URLEncoder और URLDecoder दोनों अपवाद Throwable हैं और इस प्रकार कम से कम आज़माएं/कैच ब्लॉक द्वारा सीमित होने चाहिए। लेकिन वहाँ से थोड़ा अधिक बिट सरल तरीका android.net.Uri उपयोग कर रहा है:

Uri.decode(string); 
Uri.encode(string); 

उन स्थिर तरीके हैं, एपीआई -1 के बाद से UTF-8, उपलब्ध का उपयोग करता है और कोई अपवाद नहीं फेंकता है।

0

मेरा व्यक्तिगत पसंदीदा:

static String baseNameFromURL(URL url) { 
    String shortName; 
    String path = url.getPath(); 
    String escaped = path.substring(path.lastIndexOf('/') + 1); 
    try { 
     shortName = URLDecoder.decode(escaped, "UTF-8"); 
    } catch (UnsupportedEncodingException e) { 
     throw new Error(e.getMessage(), e); 
    } 
    int period = shortName.lastIndexOf('.'); 
    return period > -1 ? shortName.substring(0, period) : shortName; 
} 

एक खाली स्ट्रिंग रिटर्न यदि URL https://stackoverflow.com/ या https://stackoverflow.com/questions/ की तरह एक फ़ाइल नाम हिस्सा नहीं है,। अगर फ़ाइल नाम भाग में बैकस्लैश है, तो यह संरक्षित है।

यदि आपको इसके बजाय विस्तार के साथ संक्षिप्त नाम की आवश्यकता है तो आप अंतिम दो पंक्तियों को बंद कर सकते हैं।

संबंधित मुद्दे