Я использую библиотеку EXIFextractor для извлечения метаданных из изображений.Эта библиотека частично использует System.Drawing.Imaging.PropertyItem для выполнения всей тяжелой работы.Некоторые данные в PropertyItem, такие как Image Details и т. Д., Извлекаются в виде ASCII-строки, хранящейся в байте [] в соответствии с документацией Microsoft.
Моя проблема в том, что международные символы (å, ä, ö, и так далее) отбрасываются и заменяются вопросительными знаками.Когда я отлаживаю код, становится очевидным, что byte [] является представлением UTF-8.
Я бы хотел проанализировать байт [] как строку UTF8, как я могу это сделать, не теряя при этом никакой информации?
Заранее спасибо!
Обновление:
Меня попросили предоставить фрагмент из моего кода:
Первый фрагмент из класса, который я использую, а именно 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());
Я также попробовал несколько других способов получить мои драгоценные å, ä, ö из данных, но, похоже, ничего не помогло.Я начинаю думать, что Ханс Пассант прав в своих выводах в своем ответе ниже.