我正在使用名爲EXIFextractor的庫從圖像中提取元數據信息。該lib部分使用System.Drawing.Imaging.PropertyItem來完成所有的辛苦工作。根據Microsoft文檔,PropertyItem中的一些數據(如圖像細節等)被作爲存儲在byte []中的ASCII字符串提取。C#:將byte []轉換爲UTF8編碼的字符串
我的問題是,國際字符(å,ä,ö等等)被刪除並替換爲問號。當我調試代碼時,顯然byte []是UTF-8的表示。
我想解析字節[]作爲一個UTF8字符串,我怎麼能做到這一點,而不會丟失過程中的任何信息?
提前致謝!
更新:
我已經被要求從我的代碼提供了一個片段:
的第一個片段是從類我使用,即EXIFextractor.cs寫Asim Goheer
foreach(System.Drawing.Imaging.PropertyItem p in parr)
{
string v = "";
// ...
else if(p.Type == 0x2)
{
// string
v = ascii.GetString(p.Value);
}
這是我的代碼,我盡我所能處理t他的結果如上。
try {
EXIFextractor exif = new EXIFextractor(ref bmp, "");
object o;
if ((o = exif["Image Description"]) != null)
MediaFile.Description = Tools.UTF8Encode(o.ToString());
我也嘗試了幾個讓我珍貴的A,A,從數據O的其他方法,但似乎沒有這樣的伎倆。我開始認爲Hans Passant在他的回答中對他的結論是正確的。
如果使用ASCII編碼讀取信息,則任何非ASCII字符都不會被正確讀取。用編碼讀取字符然後寫入字節數組聽起來不太合適。你能鏈接到說明這種情況的文檔嗎? – 2010-08-04 14:50:24
這是,如果我被允許發佈另一個超鏈接:) http://msdn.microsoft.com/en-us/library/system.drawing.imaging.propertyitem.type.aspx – dotmartin 2010-08-05 09:30:17