我有一个程序写入图片的EXIF标签,一切正常,直到遇到一些汉字。根据标签,它可以完美地工作,也可以不工作。
using (var file = Image.FromFile(tempPath)){
// Works fine with Chinese characters
var propTitle = file.PropertyItems[0];
propTitle.Id = 0x010E;
propTitle.Type = 2;
propTitle.Value = Encoding.UTF8.GetBytes($"{title}\0");
propTitle.Len = propTitle.Value.Length;
file.SetPropertyItem(propTitle);
// Doesn't work
var propTags = file.PropertyItems[0];
propTags.Id = 0x9286;
propTags.Type = 2;
propTags.Value = Encoding.UTF8.GetBytes($"{tags}\0");
propTags.Len = propTags.Value.Length;
file.SetPropertyItem(propTags);
file.Save(finalPath);}
当我去检查Windows中的标签时,最后一个标签(用于用户评论)显示为:
é«〜E>“;城å¸;é«变样¥¼å¤§åŽ|; AA>好不°æ¹¾;夜æ™SCS“AE™¯è§;
虽然其他标签(例如标题)显示正常:
夜晚
但是如果我将相同的字符串保存到另一个标签,它将在Windows资源管理器中显示正常:
高雄;城市;高楼大厦;中国台湾;夜晚的景观;
我一度认为用户评论标签没有正确处理中文字符,但我可以手动将它们添加到文件中,并且工作正常。
我做错了什么?