我正在使用一个名为EXIFextractor的库来从图像中提取元数据信息.这个lib部分是使用System.Drawing.Imaging.PropertyItem来完成所有艰苦的工作.根据Microsoft文档,PropertyItem中的某些数据(如Image Details等)将作为存储在byte []中的ASCII字符串提取.
我的问题是国际字符(å,ä,ö等等)被删除并被问号所取代.当我调试代码时,很明显byte []是UTF-8的表示.
我想将byte []解析为UTF8字符串,如何在不丢失过程中的任何信息的情况下执行此操作?
提前致谢!
更新:
我被要求提供我的代码片段:
第一个片段是从类我使用,即EXIFextractor.cs由阿西姆Goheer写
foreach( System.Drawing.Imaging.PropertyItem p in parr )
{
string v = "";
// ...
else if( p.Type == 0x2 )
{
// string
v = ascii.GetString(p.Value);
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码,我尽力处理上述结果.
try {
EXIFextractor exif = new EXIFextractor(ref bmp, "");
object o;
if ((o = exif["Image Description"]) != null)
MediaFile.Description = Tools.UTF8Encode(o.ToString());
Run Code Online (Sandbox Code Playgroud)
我还尝试了几种从数据中获取我宝贵的å,ä,ö的其他方法,但似乎没有什么可以做到的.我开始认为Hans Passant在下面的答案中对他的结论是正确的.