我正在使用名为EXIFextractor的库从图像中提取元数据信息。该库部分使用System.Drawing.Imaging.PropertyItem来完成所有艰苦工作。根据Microsoft文档,PropertyItem中的一些数据(如Image Details等)被获取为存储在byte[]中的ASCII字符串。
我的问题是国际字符(如å、ä、ö等)会被丢弃并替换成问号。当我调试代码时,显然byte[]是UTF-8的表示形式。
我想将byte[]解析为UTF8字符串,如何在此过程中不丢失任何信息?
提前感谢!
我的问题是国际字符(如å、ä、ö等)会被丢弃并替换成问号。当我调试代码时,显然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在下面的答案中得出的结论是正确的。