तो जावा में 'char' 2 बाइट्स है। (here से सत्यापित किया जा सकता।)जावा एक 3 बाइट यूनिकोड चरित्र को चार प्रकार में फिट कैसे करता है?
मैं इस नमूना कोड है:
public class FooBar {
public static void main(String[] args) {
String foo = "€";
System.out.println(foo.getBytes().length);
final char[] chars = foo.toCharArray();
System.out.println(chars[0]);
}
}
और उत्पादन इस प्रकार है:
3
€
मेरा प्रश्न, कैसे जावा एक 3 बाइट फिट किया जाता है एक चार डेटा प्रकार में चरित्र? -Dfile.encoding = UTF-8
इसके अलावा, अगर मैं कोड थोड़ा और आगे संपादित करें और निम्नलिखित बयानों जोड़ें::
File baz = new File("baz.txt");
final DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(baz));
dataOutputStream.writeChar(chars[0]);
dataOutputStream.flush();
dataOutputStream.close();
अंतिम फ़ाइल "baz Btw, मैं पैरामीटर के साथ आवेदन चला रहा हूँ .txt "केवल 2 बाइट्स होगा, और यह सही वर्ण नहीं दिखाएगा भले ही मैं इसे यूटीएफ -8 फ़ाइल के रूप में मानूं।
संपादित करें 2: यदि मैं एन्कोडिंग यूटीएफ -16 बीई के साथ फ़ाइल "baz.txt" खोलता हूं, तो मुझे अपने पाठ संपादक में € चरित्र ठीक दिखाई देगा, जो मुझे लगता है कि मुझे लगता है।
जावा आंतरिक रूप से यूटीएफ -16 का उपयोग करता है। Http://stackoverflow.com/questions/9699071/what-is-the-javas-internal-represention-for-string-modified-utf-8-utf-16 –
चार वर्ण नहीं है; यह कम है - जो जावा के साथ सबसे बड़ी समस्याओं में से एक है। यह सब कैसे काम करता है इस पर पूर्ण स्पष्टीकरण के लिए utf8everywhere.org देखें। –