我正在使用一个名为EXIFextractor的库从图像中提取元数据信息。这个库部分使用System.Drawing.Imaging.PropertyItem来完成所有艰苦的工作。根据 Microsoft 文档,PropertyItem 中的某些数据(例如图像详细信息等)被提取为存储在 byte[] 中的 ASCII 字符串。
我的问题是国际字符(å、ä、ö 等)被删除并替换为问号。当我调试代码时,很明显 byte[] 是 UTF-8 的表示。
我想将 byte[] 解析为 UTF8 字符串,如何在不丢失过程中的任何信息的情况下做到这一点?
提前致谢!
更新:
我被要求提供我的代码片段:
第一个片段来自我使用的类,即由 Asim Goheer 编写的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());
我还尝试了其他几种方法来从数据中获取我宝贵的 å、ä、ö,但似乎没有任何效果。我开始认为 Hans Passant 在下面的回答中对他的结论是正确的。