當前碰到一個問題是這樣的
以前用delphi工具編寫intermec打印機自動列印代碼,
具體的做法是將codesoft軟件導出的打印碼文件保存到db大進制欄位中。
然後再用 TBlobField(query.fieldbyName('printcode')).AsString語句讀出來開成字符串,
然後傳送給com/lpt端口即可以列印。通過發送打印碼驅動打印機打印是大家常用的方法。現在換成C#寫這段程式發現一個問題,當intermec打印機條碼上設計有圖片時,通過程式列印,圖片無法出來。
操作方法與上面是一致的,也一樣將打印碼文件通過二進制保存到db大進制欄位中。
然後在C#用讀出二進制數組bytes,再用System.Text.Encoding.Unicode.GetString(bytes)取出打印碼字符串,
不管這裡利用UTF8,UTF7,UTF32,Default 任何編碼方式讀出字符串傳給com/lpt端口都無法列印出圖片。
然後我直接用Toad查到該筆記錄,直接手工將大進制欄位導出成txt,然後在DOS容器用打印機命令是可以列印出來的,
說明問題是通過C#讀出來的編碼與打印機編碼不一致,導致圖片編碼不被認可,可是C#所有編碼類都試了還是沒有效果。後來想用流來讀取
 System.IO.MemoryStream ms = new System.IO.MemoryStream(content);
 System.IO.StreamReader r = new System.IO.StreamReader(ms);
 String printcode = r.ReadToEnd();  
一樣的效果,圖片還是無法列印出來。奇怪的,為何delphi 用 TBlobField(query.fieldbyName('printcode')).AsString 這語句的就可以呢。
這一句話導出來的字符串是按什麼編碼的? 請各位賜教, 感謝!