किसी भी दावे से पहले, मैंने चेक आउट कर लिया है:
निर्धारित करें कि क्या स्ट्रिंग में वर्ण हैं सभी एक विशिष्ट वर्ण सेट के हैं

...और चयनित उत्तर का प्रयास किया (UTF-8 के साथ):
StandardCharsets.UTF_8.newEncoder().canEncode(input);

मेरे इनपुट के साथ जो एक स्ट्रिंग है 𝕯

मैंने बिना किसी मूल्यवान परिणाम के CharsetDecoder का भी प्रयास किया (इसे हमेशा मान्य माना जाता है)

1
Alan 8 अगस्त 2019, 13:16

1 उत्तर

सबसे बढ़िया उत्तर

एक जावा String UTF-16 प्रारूप में है:

एक स्ट्रिंग UTF-16 प्रारूप में एक स्ट्रिंग का प्रतिनिधित्व करती है जिसमें पूरक वर्णों को सरोगेट जोड़े द्वारा दर्शाया जाता है (अधिक जानकारी के लिए वर्ण वर्ग में यूनिकोड वर्ण प्रतिनिधित्व अनुभाग देखें)। सूचकांक मान चार कोड इकाइयों को संदर्भित करता है, इसलिए एक पूरक चरित्र स्ट्रिंग में दो पदों का उपयोग करता है।

UTF-16 है:

UTF-16 (16-बिट यूनिकोड परिवर्तन प्रारूप) एक वर्ण एन्कोडिंग है यूनिकोड के सभी 1,112,064 मान्य कोड बिंदुओं को एन्कोड करने में सक्षम

UTF-8 है:

UTF-8 एक चर चौड़ाई वर्ण एन्कोडिंग है यूनिकोड में सभी 1,112,064 मान्य कोड बिंदुओं को एन्कोड करने में सक्षम एक से चार 8-बिट बाइट्स का उपयोग करके।

यह इस प्रकार है कि प्रत्येक वर्ण जो एक जावा String में प्रकट हो सकता है, को UTF-8 में एन्कोड किया जा सकता है।

इसलिए

StandardCharsets.UTF_8.newEncoder().canEncode(input);

हमेशा सच लौटना चाहिए।

2
Eran 8 अगस्त 2019, 13:29