文档首页/ 数据治理中心 DataArts Studio/ 常见问题/ 数据开发/ 执行Python脚本,报错“UnicodeEncodeError :‘ascii' codec cant encode characters in position 63-64 : ordinal not in range ( 128 )”怎么处理?
更新时间:2024-08-30 GMT+08:00

执行Python脚本,报错“UnicodeEncodeError :‘ascii' codec cant encode characters in position 63-64 : ordinal not in range ( 128 )”怎么处理?

在DataArts Studio的python脚本中,设置参数json.dumps(json_data, ensure_ascii=False)时,执行报错UnicodeEncodeError :‘ascii' codec cant encode characters in position 63-64 : ordinal not in range ( 128 ),如下图所示。

图1 报错信息

原因分析

DataArts Studio默认用的python2的解释器,python2默认的编码格式是ASCII编码,因ASCII编码不能编码汉字所以报错。因此需要将编码格式转化为“utf8”。

解决方法

  1. 用python3解释器,在主机上做一个软连接,如下图所示。
    图2 主机上做软连接
  2. 在文件中设置标准编码方式。

    # -*- coding: utf-8 -*-;或者设置主机的编码格式:在python安装目录的Lib\site-packages文件夹下新建一个sitecustomize.py文件,在文件中写入如下内容。

    # encoding=utf8
    #import sys
    #reload(sys)
    #sys.setdefaultencoding('utf8')
  3. 重启python,通过sys.getdefaultencoding()查看默认编码,这时为'utf8'。