Python xlrd- Erreur Unicode

Je lis mes données à partir du file excel puis je l'ai écrit dans le DB dans Django. J'utilise le module python xlrd

Je reçois l'erreur suivante:

'ascii' codec can't encode character u'\xc1' in position 6: ordinal not in range(128) 

J'ai essayé toutes les solutions comme

1) J'utilisais str(variable) . L'a supprimé. Maintenant, stockez la valeur telle qu'elle se trouve dans le DB.

2) wb = open_workbook('static/'+filename, encoding_override="utf_16_le") essayé wb = open_workbook('static/'+filename, encoding_override="utf_16_le")

3) .encode(error=replace)

Mais rien ne fonctionnait. Comment est-ce que je devrais annuler cette erreur?

Voici mon code

 def __init__(self, arm_id, dsp_name, DSP, hubcode, Pincode, pptl,state): self.arm_id = arm_id self.dsp_name = dsp_name self.DSP = DSP.zfill(2) self.hubcode = hubcode self.Pincode = Pincode self.pptl = pptl self.state = state wb = open_workbook('static/'+filename, encoding_override="utf_16_le") for sheet in wb.sheets(): number_of_rows = sheet.nrows number_of_columns = sheet.ncols items = [] arm_list = [] pptl_list = [] pptlcode_list = [] count = 1 status = 0 for row in range(1, number_of_rows): values = [] for col in range(number_of_columns): value = (sheet.cell(row,col).value) try: value = str(int(value)) except ValueError: pass finally: values.append(value) item = Excel(*values) count +=1 arm_id = item.arm_id if arm_id not in arm_list: description = 'Arm'+arm_id arm_obj = Arm(arm_id = arm_id, description = description) arm_obj.save() arm_list.append(arm_id) pptl_id = (item.pptl) if pptl_id not in pptl_list: try : pptl_obj = PPTLconfig.objects.get(pptl_id = pptl_id) pptl_obj.arm_id = arm_obj pptl_obj.hubcode = hubcode except : description = 'PPTL'+pptl_id pptl_obj = PPTLconfig(pptl_id = pptl_id, description = description , arm_id = arm_obj, hubcode = (item.hubcode)) finally : pptl_obj.save() pptl_list.append(pptl_id) code = [] for factors in SORTATION_FACTORS: if factors == 'DSP': code.append((item.DSP)) elif factors == 'Pincode': code.append((item.Pincode)) elif factors == 'DG': code.append((item.state).zfill(4)) code = ','.join(code) if code not in pptlcode_list : try : code_obj = PPTLcode.objects.get(code = code) code_obj.pconf_id = pptl_obj except : code_obj = PPTLcode(code=code, pconf_id=pptl_obj) finally : code_obj.save() pptlcode_list.append(code) else : error = "Duplicate PPTLcode " + code + " at Row " + str(count) status = 1 delete_data(1) return (status,error) ###############Add ArmPrinterMapping ###################### arm_obj_list = Arm.objects.all() for arm_obj in arm_obj_list: printer_name = 'Arm'+str(arm_obj.arm_id) ap_mapping = ArmPrinterMapping(arm_id = arm_obj, printer_name = printer_name) ap_mapping.save() return (0,0) 

définissez le encoding par défaut à utf8 , il devrait fonctionner alors

 reload(sys) sys.setdefaultencoding('utf8')