我们将数据作为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
答案 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中的结果,因为原始字节通常可以从中推断出来。