How Can We Help?
POSBOX 列印正體中文時會出現亂碼
使用樹莓派安裝 POSBOX V13 後,本以為接上熱感式印表機即可直接列印
接上國外買的 EPSON TM-T88V 後,印出的中文全都是方框
查了之後才知道國外的 EPSON 印表機是沒有內建中文字碼的
所以又上了露天拍賣買了一台中古的 EPSON TM-T88IV,到手後也確認過確實有內建正體中文字碼表(CP950 = BIG5)
哪知道中文字列印中來全部都變成了”控控控”
上網查了一些資料,才知道原來 py-xml-escpos 的作者因為查不到東南亞語系的相關資料
也無法測試(畢竟要購買當地的印表機才能測試),所以這部分並沒有完整支援
所幸對岸的同胞們早在一年前就遇到了相同的問題,也找到了解決方案:加入相對應的編碼即可
解決方法
遠端登入 POSBOX
ssh pi@posbox.ip
預設密碼為 admin
首先修改 constants.py
sudo vim /home/pi/odoo/addons/hw_escpos/escpos/constants.py
@ Line 78 加入下面兩行
TXT_ENC_PC936 = '\x1C\x21\x00' # PC936 GBK(Guobiao Kuozhan) TXT_ENC_PC950 = '\x1C\x21\x00' # PC950 BIG5
然後修改 escpos.py
sudo vim /home/pi/odoo/addons/hw_escpos/escpos/escpos.py
@ Line 751 加入下面兩行
'cp936': TXT_ENC_PC936, 'cp950': TXT_ENC_PC950,
@ Line 766,正體中文選 CP950,簡體中文選 CP936
將 encoding = 'cp437' 修改為 encoding = 'cp950'
重開 POSBOX,就可以正常列印正體中文了
注意事項
以下是修改時遇到的問題,在這邊寫出來,有遇到這個問題的人就不會一直鬼打牆了
- 印表機支援字碼表,簡體中文只支援 GB2312的不能用,要找支援 GB18030,連正體中文都包含進去了
- 需要修改的是 POSBOX 中的 xmlescpos 模組,而不是 Odoo 的 hw_escpos 模組
- POSBOX 中的 xmlescpos
位於
/home/pi/odoo/addons/hw_escpos/escpos/escpos.py
而非
/home/pi/py-xml-escpos/xmlescpos/escpos.py
/home/pi/py-xml-escpos/build/lib.linux-armv6l-2.7/xmlescpos/escpos.py