正如 Sunmast(速马/Truly Madly Deeply) ( ) 所说:如果数据库内使用char或者varchar,那么你没法控制数据库内保存时用的编码类型。
那么你也没有办法把你存入数据库的数据还原。但是你应该可以一通过加标志得到数据的还原。
如:
Dim enc As Encoding = Encoding.UTF8
Dim us As String = TextBox1.Text
Dim arr As Byte() = enc.GetBytes(us)
Dim i As Int16
us = ""
For i = 0 To (arr.Length - 1)
us = us + CStr(arr.GetValue(i)) + "/"
Next
us = us.Substring(0, us.Length - 1)
TextBox1.Text = us
Dim arrstr() As String
arrstr = us.Split("/")
For i = 0 To arrstr.Length - 1
arr(i) = CByte(arrstr(i))
Next
MsgBox(us)
us = System.Text.Encoding.UTF8.GetString(arr)
MsgBox(us)
仅供参考(我没用过这些转换,不知道结果是否如你所愿):
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim tmp As String = "管理员"
Dim tmpU As String = ToUnicode(tmp)
Dim tmp1 As String = ToDefault(tmpU)
Console.WriteLine(tmp)
Console.WriteLine(tmpU)
Console.WriteLine(tmp1)
End Sub
Private Function ToUnicode(ByVal DefaultString As String) As String
Dim tmpDefaultEncoding As System.Text.Encoding = System.Text.Encoding.Default
Dim tmpUnicodeEncoding As System.Text.Encoding = System.Text.Encoding.Unicode
Dim tmpBytes As Byte() = tmpDefaultEncoding.GetBytes(DefaultString.ToCharArray)
Dim tmpUBytes As Byte() = System.Text.Encoding.Convert(System.Text.Encoding.Default, System.Text.Encoding.Unicode, tmpBytes)
Return tmpUnicodeEncoding.GetString(tmpUBytes)
End Function
Private Function ToDefault(ByVal UnicodeString As String) As String
Dim tmpDefaultEncoding As System.Text.Encoding = System.Text.Encoding.Default
Dim tmpUnicodeEncoding As System.Text.Encoding = System.Text.Encoding.Unicode
Dim tmpUBytes As Byte() = tmpUnicodeEncoding.GetBytes(UnicodeString.ToCharArray)
Dim tmpBytes As Byte() = System.Text.Encoding.Convert(System.Text.Encoding.Unicode, System.Text.Encoding.Default, tmpUBytes)
Return tmpDefaultEncoding.GetString(tmpBytes)
End Function