GB2312转UTF-8后不可逆?
如题,我做了两个将编码在utf-8和gb2312间转换的按钮,代码如下。但发现将textbox1中的中文utf-8转为gb2312再转回,大部分是可以转回的(部分文字会变成??这样)。但如果先gb2312转为utf-8再转回的话就完全是乱码了,想了半天不知道为什么会这样,求解……
'gb2312转utf8
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Text = Encoding.GetEncoding("utf-8").GetString(Encoding.GetEncoding("gb2312").GetBytes(TextBox1.Text))
End Sub
'utf-8转gb2312
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
TextBox1.Text = Encoding.GetEncoding("gb2312").GetString(Encoding.GetEncoding("utf-8").GetBytes(TextBox1.Text))
End Sub
txt = Encoding.UF8.GetString(byteVar)的时候,你是把byteVar中的字节数组按照utf8规则逐字解析为unicode字符串(因为只有这样系统才能正确显示处理,因为现在的windows以及vs等都是基于unicode的)。