यह पहचानने का सबसे अच्छा तरीका क्या है कि एक स्ट्रिंग (है या) यूटीएफ -8 एन्कोड किया जा सकता है? Win32 API IsTextUnicode
यहां बहुत मदद नहीं है। इसके अलावा, स्ट्रिंग में यूटीएफ -8 बीओएम नहीं होगा, ताकि इसकी जांच नहीं की जा सके। और, हाँ, मुझे पता है कि ASCII रेंज के ऊपर केवल वर्ण 1 बाइट से अधिक एन्कोड किए गए हैं।यूटीएफ -8 एन्कोडेड तारों की पहचान कैसे करें
उत्तर
chardet वर्ण सेट का पता लगाने विकसित मोज़िला फ़ायर्फ़ॉक्स में प्रयोग किया जाता द्वारा सत्यापित करने के लिए एक पर्ल रेगुलर एक्सप्रेशन है। Source code
jchardet मोज़िला के स्वचालित वर्णसेट पहचान एल्गोरिदम से स्रोत का जावा पोर्ट है।
NCharDet मोज़िला और फ़ायरफ़ॉक्स ब्राउज़र में उपयोग किए गए C++ के जावा पोर्ट का .NET (C#) पोर्ट है।
Code project C# नमूना जो कि वर्ण एन्कोडिंग पहचान के लिए माइक्रोसॉफ्ट के MLang का उपयोग करता है।
UTRAC एक कमांड लाइन उपकरण और पुस्तकालय C++ लिखा स्ट्रिंग एन्कोडिंग
cpdetector पता लगाने के लिए
एक और उपयोगी पोस्ट कि पुस्तकालयों का एक बहुत की ओर इशारा करके जान सकते हैं का पता लगाने
एन्कोडिंग के लिए इस्तेमाल एक डेल्फी पुस्तकालय है चरित्र एन्कोडिंग http://fredeaker.blogspot.com/2007/01/character-encoding-detection.htmlआप संबंधित प्रश्न How Can I Best Guess the Encoding when the BOM (Byte Order Mark) is Missing? पर भी एक प्रश्न देख सकते हैं, इसमें कुछ उपयोगी सामग्री है।
कोई वास्तव में विश्वसनीय तरीका नहीं है, लेकिन मूल रूप से, बाइट्स के यादृच्छिक अनुक्रम के रूप में (उदाहरण के लिए मानक 8 बिट एन्कोडिंग में एक स्ट्रिंग) वैध यूटीएफ -8 स्ट्रिंग होने की संभावना नहीं है (यदि सबसे महत्वपूर्ण बिट बाइट सेट है, यूटीएफ -8 में किस तरह के बाइट्स इसका अनुसरण कर सकते हैं, इस बारे में बहुत विशिष्ट नियम हैं), आप स्ट्रिंग को यूटीएफ -8 के रूप में डीकोड करने का प्रयास कर सकते हैं और मान सकते हैं कि यदि कोई डिकोडिंग त्रुटियां नहीं हैं तो यह यूटीएफ -8 है।
यह निर्धारित करना कि क्या डीकोडिंग त्रुटियां हैं, एक और समस्या पूरी तरह से है, कई यूनिकोड लाइब्रेरी केवल एक त्रुटि चिह्न के साथ अमान्य वर्णों को प्रतिस्थापित करते हैं, यह इंगित किए बिना कि कोई त्रुटि हुई है या नहीं। इसलिए आपको यह निर्धारित करने का एक स्पष्ट तरीका चाहिए कि डीकोडिंग के दौरान कोई त्रुटि आई है या नहीं।
This W3C page UTF-8
यदि आप एक स्ट्रीम पढ़ रहे हैं और आपके पास शुरुआत नहीं हो सकती है, तो आपको शुरुआत में \ A को खोना चाहिए या "। {0,5}?" पहले छंटनी वाले चरित्र को पकड़ने के बाद। – mat
मैं भाषा की मानक यूनिकोड लाइब्रेरी का उपयोग करके ऐसा करने की सिफारिश करता हूं बल्कि नियमित अभिव्यक्तियों के माध्यम से इसे पुन: कार्यान्वित करता हूं। – Laurent
माणिक में 'chardet' मणि
sudo gem install chardet
यहाँ मानक इनपुट स्ट्रीम पर chardet को चलाने के लिए एक छोटे से गहरे लाल रंग का स्क्रिप्ट है चरित्र का पता लगाने ऐसा करने के लिए स्थापित करें।
require "rubygems"
require 'UniversalDetector' #chardet gem
infile = $stdin.read()
p UniversalDetector::chardet(infile)
Chardet इसके सांख्यिकीय विश्लेषण से वर्ण सेट एन्कोडिंग पर कोई अनुमान लगाएं और यह भी एक आत्मविश्वास का स्तर (0-1) आउटपुट
C/C++ स्टैंडअलोन मोज़िला वर्ण सेट डिटेक्टर के आधार पर पुस्तकालय
https://github.com/batterseapower/libcharsetdetect
यूनिवर्सल कैरेक्टर सेट डिटेक्टर (यूसीएसडी) मोज़िला सी ++ यूसीएसडी लाइब्रेरी में सी इंटरफ़ेस और निर्भरता मुक्त इंटरफ़ेस को उजागर करने वाली एक लाइब्रेरी। यह पुस्तकालय हेरिस्टिक्स का एक बेहद सटीक सेट प्रदान करता है जो कुछ इनपुट टेक्स्ट को एन्कोड करने के लिए उपयोग किए गए वर्ण सेट को निर्धारित करने का प्रयास करता है। यह बेहद उपयोगी है जब आपके प्रोग्राम को एक इनपुट फ़ाइल को संभालना होता है जिसे बिना किसी एन्कोडिंग मेटाडेटा के आपूर्ति की जाती है।
आप एक भाषा निर्दिष्ट नहीं किया है, लेकिन PHP में आप mb_check_encoding
if(mb_check_encoding($yourDtring, 'UTF-8'))
{
//the string is UTF-8
}
else
{
//string is not UTF-8
}
उपयोग कर सकते हैं Windows पर, आप CP_UTF8
कोडपेज और MB_ERR_INVALID_CHARS
ध्वज के साथ MultiByteToWideChar()
उपयोग कर सकते हैं। यदि फ़ंक्शन विफल रहता है, तो स्ट्रिंग मान्य यूटीएफ -8 मान्य नहीं है।
Win32 के लिए, आप mlang एपीआई का उपयोग कर सकते हैं, इस विंडोज का हिस्सा और Windows XP से समर्थित है, इसके बारे में अच्छी बात यह है कि यह आप कैसे संभावना इनपुट एक विशेष एन्कोडिंग में हो रहा है के आंकड़े प्रदान करता है:
CComPtr<IMultiLanguage2> lang;
HRESULT hr = lang.CoCreateInstance(CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER);
char* str = "abc"; // EF BB BF 61 62 63
int size = 6;
DetectEncodingInfo encodings[100];
int encodingsCount = 100;
hr = lang->DetectInputCodepage(MLDETECTCP_NONE, 0, str, &size, &encodings, &encodingsCount);
- 1. यूटीएफ -8 तारों की सरणी को कैसे क्रमबद्ध करें?
- 2. एक यूटीएफ -8 एन्कोडेड स्ट्रिंग
- 3. एक यूटीएफ -8-एन्कोडेड बाइटस्ट्रिंग
- 4. पायथन डिक्टवाइटर लेखन यूटीएफ -8 एन्कोडेड सीएसवी फाइल
- 5. संकलन (javac) एक यूटीएफ 8 एन्कोडेड जावा स्रोत कोड बीओएम
- 6. रेल: यूटीएफ 8
- 7. यूटीएफ -8 स्ट्रिंग
- 8. यूटीएफ -8 और ऊपरी()
- 9. यूटीएफ -8
- 10. यूटीएफ -8
- 11. मैं पायथन में एक यूटीएफ -8 एन्कोडेड स्ट्रिंग की बाइट लंबाई कैसे निर्धारित कर सकता हूं?
- 12. यूटीएफ -8
- 13. यूटीएफ 8 एनएसएसटींग
- 14. पता लगाएं कि यूटीएफ -8
- 15. यूटीएफ -8
- 16. यूटीएफ -8 स्ट्रिंग्स जीएई
- 17. विंडोज़ -1250/सीपी 1250 में यूटीएफ -8 में एन्कोडेड स्ट्रिंग को कैसे परिवर्तित करें?
- 18. यूटीएफ -8
- 19. विंडोज एपीआई एएनएसआई फ़ंक्शंस और यूटीएफ -8
- 20. पायथन में \ xXY एन्कोडेड वर्णों को यूटीएफ -8 में कैसे परिवर्तित करें?
- 21. यूटीएफ -8
- 22. यूटीएफ -8
- 23. इनपुट एन्कोडिंग: यूटीएफ -8
- 24. यूटीएफ -8 एन्कोडिंग के साथ knit2html कैसे करें?
- 25. यूटीएफ -8
- 26. यूटीएफ -8
- 27. यूटीएफ -8 स्ट्रिंग
- 28. जावा यूटीएफ -8 अजीब व्यवहार
- 29. मोंगोडीबी यूटीएफ -8
- 30. यूटीएफ -8 एन्कोडेड चरित्र के लिए बाइट्स की अधिकतम संख्या क्या है?
आपकी कोशिश करने वाली भाषा क्या है? –
वास्तव में कोई फर्क नहीं पड़ता - मैं एक सामान्य विधि की तलाश में हूं। लेकिन अगर आप किसी विशेष भाषा के लिए काम कर सकते हैं, तो कृपया –
में चिल्लाएं और, आपको यूटीएफ -8 स्ट्रीम की शुरुआत में बीओएम नहीं मिलेगा, इसका कोई मतलब नहीं है क्योंकि यूटीएफ -8 वही है जो भी बाइट ऑर्डर है। – mat