मैं कुछ बाधित वातावरण के लिए अपना स्वयं का BASE64 एन्कोडर/डिकोडर लिख रहा हूं।क्यों जेडीके 8 का बेस 64 आईएसओ -885 9 -1 का उपयोग करता है?
और मैंने पाया कि Base64.Encoder#encodeString कह रहा है कि यह उन एन्कोडेड बाइट्स से स्ट्रिंग बनाने के लिए ISO-8859-1
का उपयोग करता है।
मैं पूरी तरह से मानता हूं कि ISO-8859-1
वर्णसेट में सभी बेस 64 वर्णमाला भी शामिल हैं।
क्या US-ASCII
का उपयोग न करने का कोई संभावित कारण है?
कोड आप सही साबित होता है। [कार्यान्वयन] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/Base64.java#Base64.Encoder.encodeToString%28byte%5B % 5 डी% 2 9) सीधे ['स्ट्रिंग (बाइट [] एएससीआई, इंट हिबिटे, इंट ऑफसेट, इंट गिनती) को प्रतिनिधि करता है '] (http://docs.oracle.com/javase/8/docs/api/java/lang /String.html#String-byte:A-int-int-int-), एक कन्स्ट्रक्टर जिसे बहिष्कृत किया गया है क्योंकि यह केवल 'hibyte == 0' (पढ़ने के लिए iso-latin-1) उपयोग के लिए उपयोगी है, जिसके लिए है एक अनुकूलित प्रतिलिपि लूप। तो यह इस विशिष्ट मामले में एक उचित और अनुकूलित उपयोग है। – Holger
हालांकि यह भी काम करेगा यदि * दस्तावेज़ीकरण * ने कहा कि यह उसी कार्यान्वयन का उपयोग करते समय यूएस-एएससीआईआई का उपयोग कर रहा था। लेकिन दस्तावेज़ीकरण में "आईएसओ -885 9 -1" कहने से संभावित कार्यान्वयनकर्ताओं के लिए एक अच्छा सूचक है, यह संकेत देते हुए कि आईएसओआई-लैटिन -1 का उपयोग करके ASCII का उपयोग करने पर प्राथमिकता दी जाती है ... – Holger
@ होल्गर: और यह किसी के लिए बहुत भ्रमित होता * कार्यान्वयन और दस्तावेज़ों में एक साथ :) –