转换为utf-8编码
diff --git a/tcutils/amassprotocol.py b/tcutils/amassprotocol.py
index 5f56fee..6db2b56 100644
--- a/tcutils/amassprotocol.py
+++ b/tcutils/amassprotocol.py
@@ -1,5 +1,4 @@
-#!/usr/bin/python
-# -*- coding: gbk -*-
+# -*- coding: utf-8 -*-
import sys,codecs,struct
@@ -12,7 +11,7 @@
IFT_STRING=6
IFT_LONG=7
-# (0,0,1,IFT_BYTE,0,"msgtype","ÏûÏ¢Âë"),
+# (0,0,1,IFT_BYTE,0,"msgtype","消息码"),
FLD_NO_IDX=0
FLD_LENGTH_IDX=2
@@ -22,34 +21,34 @@
FLD_DESC_IDX=6
HDFieldsDef = [
-(1,0,0,IFT_NULL,0,"extend","À©Õ¹Óò·ñ"),
-(2,0,4,IFT_ULONG,0,"terminalsn"," ÖÕ¶ËÐòÁкÅ"),
-(3,0,2,IFT_USHORT,0,"address","CANµØÖ·"),
-(4,0,4,IFT_ULONG,0,"cardnumber","¿¨ºÅ"),
-(5,0,1,IFT_BYTE,0,"indexofew"," Ç®°üË÷Òý"),
-(6,0,2,IFT_USHORT,0,"traceofew"," Ç®°üÁ÷Ë®ºÅ"),
-(7,0,4,IFT_LONG,0,"amount"," ½»Ò×½ð¶î"),
-(8,0,4,IFT_LONG,0,"additionalamount1","¸½¼Ó½ð¶î"),
-(9,0,4,IFT_ULONG,0,"traceofpos","POSÁ÷Ë®ºÅ"),
-(10,0,4,IFT_ULONG,0,"orgtranstrace","Ô½»Ò×Á÷Ë®ºÅ"),
-(11,0,7,IFT_DATETIME,0,"datetime","½»Ò×ÈÕÆÚºÍʱ¼ä"),
-(12,0,1,IFT_BYTE,0,"responsecode","ÏìÓ¦Âë"),
-(13,0,2,IFT_USHORT,0,"terminalid","Öն˺Å"),
-(14,0,2,IFT_USHORT,0,"terminaltype","ÖÕ¶ËÀàÐÍ"),
-(15,0,2,IFT_USHORT,0,"merchantid","ÉÌ»§(Íøµã)ºÅ"),
-(16,0,4,IFT_ULONG,0,"operatorid","²Ù×÷Ô±ºÅ"),
-(17,0,8,IFT_BUFFER,0,"pin","¸öÈËʶ±ðÂëPIN"),
-(18,0,4,IFT_ULONG,0,"veroflist","ºÚÃûµ¥°æ±¾"),
-(19,0,4,IFT_ULONG,0,"managefee","½»Ò×Åú´ÎºÅ(Ôݲ»ÓÃ)"),
-(20,0,360,IFT_BUFFER,2,"additionaldata1","¸½¼ÓÐÅÏ¢1"),
-(21,0,528,IFT_BUFFER,2,"additionaldata2","¸½¼ÓÐÅÏ¢2"),
-(22,0,528,IFT_STRING,2,"additionaldata3","¸½¼ÓÐÅÏ¢3"),
-(23,0,528,IFT_STRING,2,"additionaldata4","¸½¼ÓÐÅÏ¢4"),
-(24,0,2,IFT_USHORT,0,"mac","ÏûÏ¢ÈÏÖ¤Âë")
+(1,0,0,IFT_NULL,0,"extend",u"扩展域否"),
+(2,0,4,IFT_ULONG,0,"terminalsn",u" 终端序列号"),
+(3,0,2,IFT_USHORT,0,"address",u"CAN地址"),
+(4,0,4,IFT_ULONG,0,"cardnumber",u"卡号"),
+(5,0,1,IFT_BYTE,0,"indexofew",u" 钱包索引"),
+(6,0,2,IFT_USHORT,0,"traceofew",u" 钱包流水号"),
+(7,0,4,IFT_LONG,0,"amount",u" 交易金额"),
+(8,0,4,IFT_LONG,0,"additionalamount1",u"附加金额"),
+(9,0,4,IFT_ULONG,0,"traceofpos",u"POS流水号"),
+(10,0,4,IFT_ULONG,0,"orgtranstrace",u"原交易流水号"),
+(11,0,7,IFT_DATETIME,0,"datetime",u"交易日期和时间"),
+(12,0,1,IFT_BYTE,0,"responsecode",u"响应码"),
+(13,0,2,IFT_USHORT,0,"terminalid",u"终端号"),
+(14,0,2,IFT_USHORT,0,"terminaltype",u"终端类型"),
+(15,0,2,IFT_USHORT,0,"merchantid",u"商户(网点)号"),
+(16,0,4,IFT_ULONG,0,"operatorid",u"操作员号"),
+(17,0,8,IFT_BUFFER,0,"pin",u"个人识别码PIN"),
+(18,0,4,IFT_ULONG,0,"veroflist",u"黑名单版本"),
+(19,0,4,IFT_ULONG,0,"managefee",u"交易批次号(暂不用)"),
+(20,0,360,IFT_BUFFER,2,"additionaldata1",u"附加信息1"),
+(21,0,528,IFT_BUFFER,2,"additionaldata2",u"附加信息2"),
+(22,0,528,IFT_STRING,2,"additionaldata3",u"附加信息3"),
+(23,0,528,IFT_STRING,2,"additionaldata4",u"附加信息4"),
+(24,0,2,IFT_USHORT,0,"mac",u"消息认证码")
]
class HDPack:
- ''' »ã¶à 8583 ÐÒé°ü '''
+ ''' 汇多 8583 协议包 '''
def __init__(self):
self.msg_type = 0
self.value={}
@@ -314,7 +313,7 @@
fflag = field[FLD_FLAG_IDX]
fname = field[FLD_NAME_IDX]
#print "parse field[%s] [%d]off[%d][%s]" % (fname,fflag,offset,codecs.encode(data[offset:offset+2],'hex'))
- if fflag == 2: # ±ä³¤Êý¾Ý
+ if fflag == 2: # 变长数据
#print "len [%s]" % codecs.encode(data[offset:offset+2],'hex')
endpos = self.buffer_2_int(data[offset:offset+2],IFT_USHORT)
offset += 2
diff --git a/tcutils/pyDecard.py b/tcutils/pyDecard.py
index 22e9daf..188e9a2 100644
--- a/tcutils/pyDecard.py
+++ b/tcutils/pyDecard.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
'''
Created on 2011-9-29
-
+读卡库程序
@author: cheng.tang
'''
from ctypes import *
diff --git a/tcutils/pybccclt.py b/tcutils/pybccclt.py
index ce10630..2c35317 100644
--- a/tcutils/pybccclt.py
+++ b/tcutils/pybccclt.py
@@ -1,5 +1,4 @@
-#!/usr/bin/python
-# -*- coding: gbk -*-
+# -*- coding: utf-8 -*-
from ctypes import *
@@ -182,17 +181,17 @@
drtp_no = -1
def setup(ip,port,xpack='cpack.dat',debug=0):
- ''' ³õʼ»¯ '''
+ ''' 初始化 '''
global xpack_path
xpack_path = xpack
bccclt_dll.SetDebugSwitch( debug )
r = bccclt_dll.BCCCLTInit(1)
if not r:
- raise RuntimeError("³õʼ»¯Á¬½Óʧ°Ü")
+ raise RuntimeError(u"初始化连接失败")
no = bccclt_dll.AddDrtpNode(ip,port)
pyBccclt.drtp_no = no
if pyBccclt.drtp_no < 0:
- raise RuntimeError('³õʼ»¯Í¨Ñ¶Æ½Ì¨Á¬½Óʧ°Ü')
+ raise RuntimeError(u'初始化通讯平台连接失败')
@@ -227,7 +226,7 @@
self.timeout = timeout
for k,v in request.iteritems():
if k not in cpack_fields:
- raise ValueError("×Ö¶Î %s ²»´æÔÚ" % k)
+ raise ValueError(u"字段 %s 不存在" % k)
if isinstance(v,int):
bccclt_dll.SetIntFieldByName(self.handle,self.request_row,k,v)
@@ -236,7 +235,7 @@
elif isinstance(v,str):
bccclt_dll.SetStringFieldByName(self.handle,self.request_row,k,v)
else:
- raise ValueError("×Ö¶Î %s Êý¾ÝÀàÐÍ´íÎó" % k)
+ raise ValueError(u"字段 %s 数据类型错误" % k)
bccclt_dll.SetRequestType(self.handle,func)
#print "CallRequest %d:%d" % (self.mainfunc,func)
@@ -257,7 +256,7 @@
def get_return_error(self):
r = bccclt_dll.GetRetCode(self.handle,byref(self.return_code))
if not r:
- raise RuntimeError('È¡·µ»ØÂë´íÎó')
+ raise RuntimeError(u'取返回码错误')
if self.get_retcode() <> 0:
bccclt_dll.GetStringFieldByName(self.handle,0,"vsmess",self.error_msg)
return self.return_code.value
@@ -269,13 +268,13 @@
elif not bccclt_dll.HaveNextPack( self.handle ):
return False
elif not bccclt_dll.CallNext(self.handle,self.timeout,byref(self.error_code),self.error_msg):
- raise RuntimeError('»ñÈ¡ºóÐøÊý¾Ý°üÒì³£')
+ raise RuntimeError(u'获取后续数据包异常')
else:
self.response_row = 0
self.record_count = 0
self.get_return_error()
if self.get_retcode() <> 0:
- raise RuntimeError('È¡ºóÐøÊý¾Ý·µ»Ø´íÎó£¬ret=%d' % self.get_retcode())
+ raise RuntimeError(u'取后续数据返回错误,ret=%d' % self.get_retcode())
cnt = c_int(0)
bccclt_dll.GetRecordCount(self.handle,byref(cnt))
self.record_count = cnt.value
@@ -298,46 +297,46 @@
def next_record(self,fields):
if self.response_row >= self.record_count:
- raise ValueError('ÎÞ¿ÉÓüǼ')
+ raise ValueError(u'无可用记录')
self.record = {}
for f in fields:
- #print "»ñÈ¡×Ö¶Î ",f
+ #print "获取字段 ",f
if f not in cpack_fields:
- raise ValueError("×Ö¶Î %s ²»´æÔÚ" % f)
+ raise ValueError(u"字段 %s 不存在" % f)
ctype_field = create_string_buffer(f)
if f[0] == 'l':
v = c_int(0)
r = bccclt_dll.GetIntFieldByName(self.handle,self.response_row,ctype_field,byref(v))
if not r:
- raise ValueError("×Ö¶Î %s δ·µ»Ø" % f)
+ raise ValueError(u"字段 %s 未返回" % f)
self.record[f] = v.value
elif f[0] == 's':
v = create_string_buffer('\000' * 512)
r = bccclt_dll.GetStringFieldByName(self.handle,self.response_row,ctype_field,v,511)
if not r:
- raise ValueError("×Ö¶Î %s δ·µ»Ø" % f)
+ raise ValueError(u"字段 %s 未返回" % f)
#print "%s: %s" % (f,v.value)
self.record[f] = v.value
elif f[0] == 'd':
v = c_double(0.0)
r = bccclt_dll.GetDoubleFieldByName(self.handle,self.response_row,ctype_field,byref(v))
if not r:
- raise ValueError("×Ö¶Î %s δ·µ»Ø" % f)
+ raise ValueError(u"字段 %s 未返回" % f)
self.record[f] = v.value
elif f[0] == 'u':
v = create_string_buffer('\000' * 1024)
r = bccclt_dll.GetStringFieldByName(self.handle,self.response_row,ctype_field,v,1023)
if not r:
- raise ValueError("×Ö¶Î %s δ·µ»Ø" % f)
+ raise ValueError(u"字段 %s 未返回" % f)
data = v.value
data = data[2:]
data = self.convert_ascii(data)
self.record[f] = data
else:
- raise ValueError('×Ö¶ÎÀàÐÍ´íÎó %s' % f)
+ raise ValueError(u'字段类型错误 %s' % f)
self.response_row += 1
#print "fetch one record , " ,self.record
return self.record