2012-12-21 108 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)