我用直接驱动打印机的方法打印中文内容,没有装打印驱动程序,使用的是POS58小票打印机。
打印英文正常,但是中文打印出来的字是错的,打印出来的文字也是中文,但是不是我要打印的字,这些字看上去很生僻。
代码如下,请各位大虾指点,多些。
string unicodeString = "中文 一二三四五六七八九十";
Encoding chinese = Encoding.GetEncoding(936);
Encoding unicode = Encoding.Unicode;
byte[] unicodeBytes = unicode.GetBytes(unicodeString);
byte[] chineseBytes = Encoding.Convert(unicode, chinese, unicodeBytes);
char[] chineseChars = new char[chinese.GetCharCount(chineseBytes, 0, chineseBytes.Length)];
chinese.GetChars(chineseBytes, 0, chineseBytes.Length, chineseChars, 0);
string chineseString = new string(chineseChars);
IntPtr iHandle = CreateFile("LPT1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
if (iHandle.ToInt32() == -1)
{
    MessageBox.Show("can   not   open   port");
}
else
{
    FileStream fs = new FileStream(iHandle, FileAccess.ReadWrite);
    StreamReader sr = new StreamReader(fs);
    StreamWriter sw = new StreamWriter(fs);
    sw.WriteLine(unicodeString);
    sw.WriteLine(chineseString);
    sw.WriteLine("This is my file.");
    sw.WriteLine("I can write ints {0} or floats {1}, and so on.", 1, 4.2);
    sw.Close();
}打印中文时,unicode和pagecode936打印的内容完全一样,像是转换没起作用。
打印英文正常。