以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请狐爸进来看看,关于串口的问题 (http://foxtable.com/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)
看看是不是默认编码不同。 我这里是以选中形式测试终端编码应该选者哪个,最后打印测试正常再保存该编码的。(如图)
|
-- 作者:狐狸爸爸 -- 发布时间:2012/11/10 12:23:00 -- Default编码表示电脑的默认编码,不是每台电脑都相同的。 所以我让你在命令窗口执行下面的代码: MessageBox.show(System.Text.Encoding.Default.ToString)
看看5台电脑的默认编码是否相同。 |
-- 作者:xiaoqiwei -- 发布时间:2012/11/10 15:27: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编辑过]
|
-- 作者: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,一种较为古老的编码。 网上说,东亚大多数国家语言使用这种编码格式。可能是你这两台的驱动什么的没有装好吧。 |