日期:2014-05-20  浏览次数:21100 次

C# 中用 api WritePrinter 打印中文的问题
声明为:
[DllImport( "winspool.Drv ",   CallingConvention=CallingConvention.StdCall,   CharSet=CharSet.Unicode,   SetLastError=true,   ExactSpelling=true)]
  public   static   extern   bool   WritePrinter(IntPtr   hPrinter,   byte[]   pBytes,   int   dwCount,   ref   int   dwWritten);


调用:
bSuccess   =   WritePrinter(hPrinter,   pBytes,   dwCount,   ref   dwWritten);  

但是只要打印内容是中文出来的就是乱码,英文字母和数字则没有问题
请问各位高手     怎么解决

------解决方案--------------------
byte[] pBytes 编码格式的问题,
这个api用的是本机编码的吧,windows问unicode
在形成byte[]时用Encoding的unicode编码,
不行的话再用用别的编码形式试试
------解决方案--------------------
可能是驱动问题,驱动程序不正确就打印不了中文!因为很多激光和喷墨打印机都没有汉字库,所以无法直接打印中文,在Windows下只有借助驱动程序,打印机才可以打印中文!
------解决方案--------------------
楼主肯定是在做小票打印机的,呵呵,一般直接用wRiteFile,写口就行,速度很快的,一秒钟就可以打出来,:)
网上有相关类,你找一下就好

另外如果你用的西铁城的话,必须找他的手册 如果不写口,
直接用OPOS就好了
在C#写几句话就完了,但速度肯定没有写口的快.