转换为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