字节到字符串 - 晦涩的字符

时间:2012-12-21 11:34:49

标签: vb.net character-encoding blob

我们将数据作为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的答案,它已经删除了 图标,但是断线仍然神秘地丢失。

我会发布一个完整的输出但它包含私人数据,但是在其末尾粘贴的电子邮件编码为:

,wd-s.@Ó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-€W@U`N%PDE 

2 个答案:

答案 0 :(得分:2)

令人讨厌的修复,但你可以这样做vOut = vOut.Replace(“ ”,vbCrLf)

答案 1 :(得分: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中的结果,因为原始字节通常可以从中推断出来。