मैं एक स्ट्रिंग को जावा में एक इनपुटस्ट्रीम में कैसे बदलूँ?


जवाबों:


1409

ऐशे ही:

InputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8));

ध्यान दें कि यह मानता है कि आप एक इनपुटस्ट्रीम चाहते हैं जो बाइट्स की एक धारा है जो आपके मूल स्ट्रिंग को UTF-8 के रूप में एन्कोडेड दर्शाती है ।

7 से कम जावा के संस्करणों के लिए, के StandardCharsets.UTF_8साथ बदलें "UTF-8"


1
क्या यह चारसेट खो जाने पर नहीं मिलता है: स्ट्रिंग -> बाइट्स -> बाइटएयर इंप्यूटस्ट्रीम? उदाहरण के लिए "ü" पर यह कोशिश करते समय, बाइट्स के पास सही अक्षर होगा, लेकिन बाइटअरेइन्पुटइस्ट्रीम ने सही रूपांतरण खो दिया होगा। या मैं गलत हूँ?
जोनाथन रामोस

20
StandardCharsets को न्यूनतम एपीआई स्तर 19 की आवश्यकता होती है।
नान्टोका

3
@JonathanRamos यह रूपांतरण धारण करने की धारा तक नहीं है। यह बाइट्स को वापस स्ट्रिंग्स में डिकोड करने के लिए है।
क्रंचर

26
@Nantoka StandardCharsets.UTF_8 के बजाय आप किसी भी API स्तर के लिए Charset.forName ("UTF-8") का उपयोग कर सकते हैं।
PJ_Finnegan

इसका काम सिर्फ मैं स्ट्रिंग नया जोड़ने के लिए = URLDecoder.decode (URLEncoder.encode (प्रतिक्रिया, "iso8859-1"), "UTF-8"); for (utf8)
सिरमगिड

275

मुझे लगता है कि अपाचे कॉमन्स आईओ का उपयोग करना मेरे जीवन को बहुत आसान बनाता है।

String source = "This is the source of my input stream";
InputStream in = org.apache.commons.io.IOUtils.toInputStream(source, "UTF-8");

आप पा सकते हैं कि पुस्तकालय आमतौर पर किए जाने वाले कार्यों के लिए कई अन्य शॉर्टकट भी प्रदान करते हैं जिन्हें आप अपनी परियोजना में उपयोग करने में सक्षम हो सकते हैं।


5
उन्होंने नए बाइटएयरइंटरप्यूटस्ट्रीम (exampleString.getBytes ("UTF-8") का उपयोग किया। तो यह InputStream स्ट्रीम = new ByteArrayInputStream (exampleString.getBytes ("UTF-8") का उपयोग करने का तरीका अनुकूलित होगा;
पंकज कुमार

9
@ पंकजकुमार: जावा का जेआईटी कंपाइलर इनलाइन को सक्षम करने से अधिक है।
एंड्रयू व्हाइट

8
एन्कोडिंग निर्दिष्ट नहीं करने वाली विधि का उपयोग करना एक भयानक विचार है ...
b1nary.atr0phy

2
@ b1naryatr0phy: अपाचे कॉमन्स में इस पद्धति का एक और रूप शामिल है जो एन्कोडिंग को दूसरे पैरामीटर के रूप में लेता है (जो, आप सही कह रहे हैं, बेहतर है): InputStream in = IOUtils.toInputStream (स्रोत, "UTF-8");
कुग

8
आप StandardCharsets.UTF_8सादे पाठ के बजाय परिभाषा का उपयोग कर सकते हैं ।
डगलसल्प्स

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.