以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请狐爸进来看看,关于串口的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25460)

--  作者:xiaoqiwei
--  发布时间:2012/11/9 19:12:00
--  请狐爸进来看看,关于串口的问题

已选定好COM口,在测试打印时,无论是选择哪个字符编码,打印出来的全都是乱码,打印的内容是中文,XP系统,五台电脑用,目前发现有两台电脑会这样,其他三台打印正常,同样的电脑型号,同样的小票打印机,型号也相同,

 

Default、ASCII、BigEndianUnicode、Unicode、UTF32、UTF8  这些编码全都试过,都不行,请问狐爸怎么解决吖?


--  作者:xiaoqiwei
--  发布时间:2012/11/9 23:53:00
--  
以下是引用muhua在2012-11-9 21:13:00的发言:

看看:http://www.foxtable.com/help/topics/1980.htm

 

但是如果收发的字符串出现乱码,那么应该向设备提供商了解其所采用的编码,然后在代码中做出正确的设置。

 

全部编码都试过了,都不行,但是另外三台电脑采用 Default 编码就正常,同一型号同一牌子的热敏感小票打印机

[此贴子已经被作者于2012-11-9 23:52:59编辑过]

--  作者:lin_hailun
--  发布时间:2012/11/10 10:29:00
--  
以下是引用xiaoqiwei在2012-11-9 23:53:00的发言:

全部编码都试过了,都不行,但是另外三台电脑采用 Default 编码就正常,同一型号同一牌子的热敏感小票打印机

[此贴子已经被作者于2012-11-9 23:52:59编辑过]

如果所有编码都试过以后,那么应该就不是程序的问题。

楼主,注意一下打印机的驱动程序,还有就是打印机的数据线是否有损坏。

--  作者:狐狸爸爸
--  发布时间:2012/11/10 10:43:00
--  

在这5台电脑分别执行:

 

MessageBox.show(System.Text.Encoding.Default.ToString)

 

看看是不是默认编码不同。


--  作者:xiaoqiwei
--  发布时间:2012/11/10 12:21:00
--  
以下是引用狐狸爸爸在2012-11-10 10:43:00的发言:

在这5台电脑分别执行:

 

MessageBox.show(System.Text.Encoding.Default.ToString)

 

看看是不是默认编码不同。

我这里是以选中形式测试终端编码应该选者哪个,最后打印测试正常再保存该编码的。(如图)

 


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看


--  作者:狐狸爸爸
--  发布时间:2012/11/10 12:23:00
--  

Default编码表示电脑的默认编码,不是每台电脑都相同的。

所以我让你在命令窗口执行下面的代码:

MessageBox.show(System.Text.Encoding.Default.ToString)

 

看看5台电脑的默认编码是否相同。


--  作者:xiaoqiwei
--  发布时间:2012/11/10 15:27:00
--  

我在正常打印的电脑上执行该代码,提示如下图的提示,请问狐爸这是什么意思?

 


图片点击可在新窗口打开查看此主题相关图片如下:未命名-1.jpg
图片点击可在新窗口打开查看


--  作者:lin_hailun
--  发布时间:2012/11/10 15:37:00
--  
 那么,打印的时候,设置成这样的编码试一下。

Ports.Add("COM2")
Ports("COM2").Encoding = Encoding.GetEncoding(936)
\'Ports("COM2").Encoding = Encoding.GetEncoding(932)
\'Ports("COM2").Encoding = Encoding.GetEncoding(949)
\'Ports("COM2").Encoding = Encoding.GetEncoding(950)
Ports("COM2").Open()
[此贴子已经被作者于2012-11-10 15:38:11编辑过]

--  作者:xiaoqiwei
--  发布时间:2012/11/10 16:04:00
--  
以下是引用lin_hailun在2012-11-10 15:37:00的发言:
 那么,打印的时候,设置成这样的编码试一下。

Ports.Add("COM2")
Ports("COM2").Encoding = Encoding.GetEncoding(936)
\'Ports("COM2").Encoding = Encoding.GetEncoding(932)
\'Ports("COM2").Encoding = Encoding.GetEncoding(949)
\'Ports("COM2").Encoding = Encoding.GetEncoding(950)
Ports("COM2").Open()
[此贴子已经被作者于2012-11-10 15:38:11编辑过]

请问 lin_hailun  您这个 “Encoding.GetEncoding(936)” 是什么意思的?我选择这个打印正常,下面几个就是乱码!


--  作者:lin_hailun
--  发布时间:2012/11/10 16:07:00
--  
 这个就是你打印机的编码 DBCSCodePageEncoding,一种较为古老的编码。

 网上说,东亚大多数国家语言使用这种编码格式。可能是你这两台的驱动什么的没有装好吧。