कनवर्ट करना मैं छवियों से मेटाडेटा जानकारी निकालने के लिए EXIFextractor नामक लाइब्रेरी का उपयोग कर रहा हूं। भाग में यह lib System.Drawing.Imaging.PropertyItem सभी कड़ी मेहनत करने के लिए उपयोग कर रहा है। प्रॉपर्टीइटम में कुछ डेटा, जैसे छवि विवरण इत्यादि, को माइक्रोसॉफ्ट दस्तावेज के अनुसार बाइट [] में संग्रहीत एएससीआईआई-स्ट्रिंग के रूप में लाया जाता है।सी #: बाइट [] से UTF8 एन्कोडेड स्ट्रिंग
मेरी समस्या यह है कि अंतर्राष्ट्रीय पात्र (å, ä, ö, आदि) को हटा दिया जाता है और प्रश्नों द्वारा प्रतिस्थापित किया जाता है। जब मैं कोड डीबग करता हूं तो यह स्पष्ट होता है कि बाइट [] एक यूटीएफ -8 का प्रतिनिधित्व है।
मैं बाइट [] को यूटीएफ 8-स्ट्रिंग के रूप में पार्स करना चाहता हूं, मैं प्रक्रिया में किसी भी जानकारी को खोए बिना यह कैसे कर सकता हूं?
अग्रिम धन्यवाद!
अद्यतन:
पहले टुकड़ा वर्ग मैं का उपयोग, अर्थात् EXIFextractor.cs द्वारा लिखित से है:
मैं अपने कोड से एक टुकड़ा देने के लिए कहा गया है असिम गोहिर
foreach(System.Drawing.Imaging.PropertyItem p in parr)
{
string v = "";
// ...
else if(p.Type == 0x2)
{
// string
v = ascii.GetString(p.Value);
}
और यह मेरा कोड है जहां मैं टी को संभालने के लिए अपना सर्वश्रेष्ठ प्रयास करता हूं वह उपरोक्त के परिणाम।
try {
EXIFextractor exif = new EXIFextractor(ref bmp, "");
object o;
if ((o = exif["Image Description"]) != null)
MediaFile.Description = Tools.UTF8Encode(o.ToString());
मैं भी मेरा कीमती Å, ä, डेटा से ö हो रही करने के अन्य तरीकों के एक जोड़े की कोशिश की है, लेकिन कुछ भी चाल करने के लिए लगता है। मुझे लगता है कि हंस पासेंट अपने जवाब में उनके निष्कर्षों के बारे में सही है।
यदि जानकारी ASCII एन्कोडिंग का उपयोग करके पढ़ी जाती है, तो किसी भी गैर-ASCII वर्ण परिणामस्वरूप सही ढंग से नहीं पढ़े जाएंगे। एन्कोडिंग वाले वर्णों का यह पठन और फिर बाइट सरणी में लिखना सही नहीं लगता है। क्या आप दस्तावेज से लिंक कर सकते हैं जो कहता है कि यह मामला है? –
यहां यह है, अगर मुझे एक और हाइपरलिंक पोस्ट करने की अनुमति है :) http://msdn.microsoft.com/en-us/library/system.drawing.imaging.propertyitem.type.aspx – dotmartin