小编dot*_*tin的帖子

C#:将byte []转换为UTF8编码的字符串

我正在使用一个名为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在下面的答案中对他的结论是正确的.

c# exif character-encoding

9
推荐指数
1
解决办法
3万
查看次数

标签 统计

c# ×1

character-encoding ×1

exif ×1