2012-12-21 112 views
2

我們將數據作爲BLOBS存儲在我的網站上的一個數據庫(呃,我知道)現在我正在檢索數據,放入字節,然後轉換爲字符串來顯示。但是,正如你在下面看到的,當我在調試模式下查看時,文本中會出現奇怪的字符。字節到字符串 - 模糊字符

Hi John 
� 
I look forward to receipt of your instructions in due course. 
� 
Kind regards 
� 

當它呈現它顯示像

Hi John�I look forward to receipt of your instructions in due course.�Kind regards� 

目前的代碼是:

Dim RSFileNote As New ADODB.Recordset 
     RSFileNote.Fields.Append("FileNote", 205, intSizeofBlob) 

     RSFileNote.Open() 
     RSFileNote.AddNew() 

     For n As Integer = 0 To dsVecSegment.Tables(0).Rows.Count - 1 
      RSFileNote("FileNote").AppendChunk(dsVecSegment.Tables(0).Rows(n).Item("SDATA")) 
     Next 
     RSFileNote.Update() 

     Dim vOut As String = System.Text.Encoding.UTF8.GetString(RSFileNote("FileNote").Value) 

我會想到UTF8編碼將解決這個問題,但沒有人知道我是什麼可以做些什麼來解決我的問題? (因爲獲取數據庫中的內容是正確的不是一個選項)

理想情況下,我想刪除多餘的字符並用實際工作的換行符替換換行符(在調試過程中的.Value中)。

更新

我認爲這個問題與事實電子郵件奠定粘貼到初始輸入字段在數據庫中存儲副本&。所以他們正在將外觀的東西帶入現場。

更新2

被採取Esailija答案考慮它已經刪除的圖標,但是斷裂線仍然神祕失蹤。

我將然而後一個完整的輸出包含私人數據,但與已經在它的結束被粘貼電子郵件進行編碼:

,[email protected]ÓyøYð&¥¥ÀAàA•F• € p IØ%Ð`ÐîèØMà!µì$ô#i!°p1¤ Ið-œ)) -„U€. x.y.)¨}U¹ M½!;¹4%;¨5˜6)˜2YA'8<1<8<9•=; !:$Ì78è# Ùœ<ÐNÌ'Á',A yGÅC ±]Õ 1 õH¥Ve„8¥9dN¹FMX hX`Kè¸XÍ」U」dnÕU-€[email protected]`N%PDE 
+1

討厭的修復,但你可以做到這一點VOUT = vOut.Replace(「」,vbCrLf) –

+1

這已糾正該字符謝謝:) –

+0

的問題,如果你使用Encoding.Default而不是UTF8你明白什麼不同? –

回答

2

unicode替換字符()表示在解碼字節序列時發生錯誤,即該字節序列在所選UTF編碼(在本例中爲UTF-8)中無效。所以任何無效的UTF-8序列都會被替換字符替換。它也可以用作普通字符,但在這裏似乎並不是這種情況。

原因很可能是編碼不是UTF-8。沒有看到原始字節,我最好的猜測是它實際上在CP1252中。

那麼試試這個:

Dim enc As Encoding = Encoding.GetEncoding(1252) 
Dim vOut As String = enc.GetString(RSFileNote("FileNote").Value) 

而且評論的結果是在1252什麼,因爲原始字節通常可以從推斷。

+0

你也可以轉儲'byte []'的值,這將是最有幫助的 – Esailija

2

討厭的修復,但你可以做到這一點VOUT = VOUT。替換(「 」,vbCrLf)