में इनपुटस्ट्रीम की लैटिन -1 सामग्री को कनवर्ट करें मुझे इनपुट इनपुट को स्ट्रिंग में कनवर्ट करने की आवश्यकता है। यहां कठिनाई इनपुट एन्कोडिंग है, अर्थात् लैटिन -1। मैंने एन्कोडिंग को सीधे प्राप्त करने के लिए स्ट्रिंग, गेटबाइट्स, चार [] इत्यादि के साथ कई दृष्टिकोण और कोड स्निपेट की कोशिश की, लेकिन कुछ भी काम नहीं कर रहा था।यूटीएफ -8 स्ट्रिंग
अंत में, मैं नीचे काम कर रहे समाधान के साथ आया था। हालांकि, जावा के लिए भी, यह कोड मेरे लिए थोड़ा वर्बोज़ लगता है। तो यहां सवाल है:
क्या यहां क्या किया जाता है, यह हासिल करने के लिए एक सरल और अधिक सुरुचिपूर्ण दृष्टिकोण है?
private String convertStreamToStringLatin1(java.io.InputStream is)
throws IOException {
String text = "";
// setup readers with Latin-1 (ISO 8859-1) encoding
BufferedReader i = new BufferedReader(new InputStreamReader(is, "8859_1"));
int numBytes;
CharBuffer buf = CharBuffer.allocate(512);
while ((numBytes = i.read(buf)) != -1) {
text += String.copyValueOf(buf.array(), 0, numBytes);
buf.clear();
}
return text;
}
आपकी आलोचनात्मक टिप्पणी के लिए धन्यवाद। आपका पहला समाधान वह था जो मैं ढूंढ रहा था। हालांकि, मैं आपके दूसरे समाधान के साथ अपना बिंदु देख सकता हूं जो सामान्य मामले को बहुत अधिक संबोधित करता है। मुझे लगता है कि यह भी है कि आपके उदाहरण में बफर आकार 2048 बाइट क्यों है? – cyroxx
2048-बाइट बफर सिर्फ व्यक्तिगत वरीयता थी; आप जो भी रन-टाइम और मेमोरी खपत के लिए उचित व्यापार-बंद प्रदान करते हैं उसका उपयोग कर सकते हैं। – oldrinb