EXIFextractorというライブラリを使用して、画像からメタデータ情報を抽出しています。このライブラリの一部は、System.Drawing.Imaging.PropertyItemを使用してすべてのハードワークを実行しています。Image DetailsなどのPropertyItemの一部のデータは、Microsoftのドキュメントに従って、byte[]に格納されたASCII文字列としてフェッチされます。
私の問題は、国際的な文字(å、ä、öなど)が削除され、疑問符に置き換えられることです。コードをデバッグすると、byte[]がUTF-8の表現であることがわかります。
byte []をUTF8文字列として解析したいのですが、プロセスで情報を失うことなくこれを行うにはどうすればよいですか?
前もって感謝します!
アップデート:
コードからスニペットを提供するように求められました。
最初のスニペットは、私が使用するクラス、つまりAsimGoheerによって作成された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());
私はまた、データから私の貴重なå、ä、öを取得する他のいくつかの方法を試しましたが、何もうまくいかないようです。私はハンス・パッサントが以下の彼の答えで彼の結論について正しいと思い始めています。