python中编码发生错误。

linux环境下发生编码错误。windows下正常。
linux下已经在命令行改过编码格式,LANG=zh_CN.UTF-8

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 4-6: ordinal not in range(256)

最前面已经有 # -- coding:utf-8 --

这里写的是读取本地excel表格的表名。表名有数字和汉字。是在print的时候报错。

excel_files = get_excel_files(config.get_standard_template_files())#os.walk获得excel文件

standard_template_infos = {}
for file in excel_files:
    wb = xlrd.open_workbook(file)
    sheet_names = wb.sheet_names()
    for sheet_name in sheet_names:
        standard_template_id = get_standard_template_id(sheet_name)
        if not standard_template_id:
            print '请检查文件【%s】中的sheet页面【%s】。' % (file, sheet_name)
            continue
        sheet = wb.sheet_by_name(sheet_name)
        point_codes = []
        nrows = sheet.nrows
        if nrows <= 2:
            continue
        print sheet_name

def get_standard_template_id(sheet_name):#在这个函数中报错

pattern = u'^(\d{5})'
match = re.match(pattern, sheet_name)
if match is not None:
    code = sheet_name[0:5]
    return code
else:
    print sheet_name#在这里报错
return None

linux下python版本2.7.3.报错,
windows下python版本 2.7.13正常运行
求指教

阅读 6.1k
2 个回答

从错误信息可以得知,你的 Linux 系统上 Python 使用的默认编码是 latin-1
如果你正确设置了 LANGLC_ALL 环境变量还出错的话,可以试试再设置 PYTHONIOENCODING 环境变量:

export PYTHONIOENCODING=utf-8
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题