पर समान नहीं हैं। मैं दो जावा स्ट्रिंग्स की तुलना करने के लिए एक तरीका ढूंढ रहा हूं जो लेक्सिकोग्राफिक रूप से समकक्ष हैं लेकिन बाइट स्तर पर समान नहीं हैं।दो स्ट्रिंग्स की तुलना करें जो लेक्सिकोग्राफिक रूप से समकक्ष हैं लेकिन बाइट स्तर
अधिक स्पष्ट निम्न फ़ाइल नाम "baaaé.png", बाइट स्तर यह दो अलग अलग तरीकों दर्शाया जा सकता है पर ले:,
[98, 97, 97, 97, -61 -87 , 46, 112, 110, 103] -> "é" 2 बाइट्स के साथ इनकोडिंग
[98, 97, 97, 97, 101, -52, -127, 46, 112, 110, 103] -> "é" को 3 बाइट
byte[] ch = {98, 97, 97, 97, -61, -87, 46, 112, 110, 103};
byte[] ff = {98, 97, 97, 97, 101, -52, -127, 46, 112, 110, 103};
String st = new String(ch,"UTF-8");
String st2 = new String(ff,"UTF-8");
System.out.println(st);
System.out.println(st2);
System.out.println(st.equals(st2));
के साथ एन्कोड किया गया है निम्नलिखित आउटपुट उत्पन्न करेगा:
baaaé.png
baaaé.png
false
तुलना करने का कोई तरीका है ताकि बराबर विधि सही हो जाए?
वे इसे यहां प्रस्तुत नहीं करते हैं। –
@dystroy जो हमें "_lexicographically equal_" कथन पर पुनर्विचार करने की ओर ले जाता है :) – Fallup
@dystroy वेब के लिए (दृढ़ता से) पसंदीदा सामान्यीकृत फॉर्म एनएफसी है। स्पष्ट रूप से आपका वेब ब्राउज़र आसान शॉर्टकट लेता है और केवल एनएफसी का समर्थन करता है, न कि एनएफडी। इसके लायक होने के लिए, मेरा वही करता है। स्पष्ट रूप से वेब ब्राउज़र एनएफडी लागू करने से परेशान नहीं हैं। हालांकि, मैं दोनों उदाहरणों को एक अलग एप्लिकेशन में कॉपी और पेस्ट कर सकता हूं जो एनएफसी और एनएफडी दोनों का समर्थन करता है और वे समान रूप से प्रदर्शित होते हैं। – Celada