POS小票打印时,在VB2010通过并口输出打印中文出现乱码
POS小票打印时,通过并口输出打印中文出现乱码:
VB.net 2010中:
Dim theLPT As New LPT
theLPT.Open()
theLPT.Write(Chr(28) + Chr(38)) 'FS &进入汉字模式
theLPT.Write(Chr(28) + Chr(87) + Chr(1))
theLPT.Write(" " & " 中文测试")
这时打印出现乱码,全为" ??????"
而,在VB6.0中,类似的方式调用,却能正常打印,代码如下:
Open "LPT1:" For Output As #1
Print #1, Chr(28) + Chr(38) 'FS &进入汉字模式
Print #1, Chr(28) + Chr(87) + Chr(1) 'FS W n=1
Print #1, " "; "中文测试"
请高手指点。
[解决办法]
Public Sub Write(ByVal sData As String)
Dim bytes() As Byte = System.Text.Encoding.ASCII.GetBytes(sData)
For Each b As Byte In bytes
Write(b)
Next
End Sub
用的ASCII,中文肯定乱码,改成
System.Text.Encoding.UTF8.GetBytes(sData)
或
System.Text.Encoding.GetEncoding("GB2312").GetBytes(sData)