में एक स्ट्रिंग को डबल-एन्कोड किया गया था, मुझे छोटे तारों की एक बड़ी सूची को संसाधित करने की आवश्यकता है (ज्यादातर रूसी में, लेकिन कोई अन्य भाषा संभव है, जिसमें कीबोर्ड पर चलने वाली बिल्ली से यादृच्छिक कचरा भी शामिल है)।पता लगाएं कि यूटीएफ -8
इनमें से कुछ तारों को दो बार यूटीएफ -8 में एन्कोड किया जाएगा।
मुझे विश्वसनीय रूप से पता लगाना चाहिए कि क्या दिया गया स्ट्रिंग डबल-एन्कोड किया गया है, और इसे ठीक करें। मुझे बाइट्स का निरीक्षण करके, बाहरी पुस्तकालयों का उपयोग किए बिना ऐसा करना चाहिए। पहचान जितनी जल्दी हो सके होना चाहिए।
सवाल यह है कि: यह पता लगाने के लिए कि किसी दिए गए स्ट्रिंग को यूटीएफ -8 में दो बार एन्कोड किया गया था?
अद्यतन:
मूल तार UTF-8 में कर रहे हैं। यहाँ AS3 कोड है कि दूसरी एन्कोडिंग करता है (दुर्भाग्य से मैं ग्राहक कोड पर नियंत्रण नहीं है, तो मैं इसे ठीक नहीं कर सकता):
private function toUTF8(s : String) : String {
var byteArray : ByteArray = new ByteArray();
byteArray.writeUTFBytes(s);
byteArray.position = 0;
var res : String = "";
while(byteArray.bytesAvailable){
res += String.fromCharCode(byteArray.readUnsignedByte());
}
return res;
}
myString = toUTF8(("" + myString).toLowerCase().substr(0, 64));
नोट toLowerCase()
कॉल। शायद यह मदद कर सकता है?
आपका क्या मतलब है डबल UTF8 में एन्कोड द्वारा? ? –
@Martin: Fwiw, मेरा उत्तर मान लिया गया है इसका मतलब है कि एन्कोडिंग एक्स में पाठ लेते हैं, यह UTF-8 बाइट्स को बदलने, तो उन बाइट्स लेते हैं, उन्हें एन्कोडिंग एक्स के रूप में पुनर्व्याख्या और UTF-8 बाइट्स को बदलने कि। दूसरे शब्दों में, क्या होता है जब आप गलत तरीके से ISO-8859-1 (या जो भी) के रूप में एक UTF-8 फ़ाइल फ़ाइल की व्याख्या और फिर "यह UTF-8 में बदलें"। –
ठीक है, मूल पाठ यूटीएफ -8 में था, और इसे एक बार फिर बग्गी क्लाइंट लाइब्रेरी द्वारा यूटीएफ -8 में एन्कोड किया गया है। मैं मूल तार पर नियंत्रण की जरूरत नहीं है (मैं क्या एन्कोडिंग कि पुस्तकालय पाठ ग्रहण में था के बारे में अधिक जानकारी प्राप्त करने की कोशिश करेंगे।) –