UnicodeDecodeError:'charmap' 编解码器无法解码位置 55 中的字节 0x81:字符映射到 <undefined>

新手上路,请多包涵

我是 Python 的新手,希望有人可以向我解释错误消息的含义。

具体来说,我有一些Python和SPSS结合在一起的代码保存在Atom中,这是一个前同事创建的。现在因为以前的同事不在了,我现在需要运行代码。我所做的是从 SPSS22 运行下面的代码。

     begin program.
    import spss,spssaux,imp
    abcvalid = imp.load_source('abcvalid', "I:/VALIDITY CHECK/Python Library/2016/abcvalid2016.py")
    import abcvalid
    abcvalid.fullprocess("9_26_2016","M:/Users/Yli\2016 SURVEY/DOWNLOADS/9_26_2016/","M:/Users/Yli/2016 SURVEY/Legacy15.sav")
    end program.

然后我从输出中得到以下内容。

     Traceback (most recent call last):
      File "<string>", line 5, in <module>
      File "I:/VALIDITY CHECK/Python Library/2016/abcnvalid2016.py", line 2067, in fullprocess
        dataprep(date,filepath,legacypath)
      File "I:/VALIDITY CHECK/Python Library/2016/abcvalid2016.py", line 2006, in dataprep
        emailslower(date,filepath)
      File "I:/VALIDITY CHECK/Python Library/2016/abcvalid2016.py", line 1635, in emailslower
        DATASET ACTIVATE comment_data.""".format(date,filepath))
      File "C:\PROGRA~1\IBM\SPSS\STATIS~1\22\Python\Lib\site-packages\spss\spss.py", line 1494, in Submit
        cmdList = spssutil.CheckStr(cmdList)
      File "C:\PROGRA~1\IBM\SPSS\STATIS~1\22\Python\Lib\site-packages\spss\spssutil.py", line 166, in CheckStr
        s1 = unicode(mystr,locale.getlocale(locale.LC_CTYPE)[1])
      File "C:\Program Files\IBM\SPSS\Statistics\22\Python\lib\encodings\cp1252.py", line 15, in decode
        return codecs.charmap_decode(input,errors,decoding_table)
    UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 55: character maps to <undefined>

我知道这个网站上有类似的问题,但问题和答案对我来说太难理解了。如果有人可以帮助我,我将不胜感激!

先感谢您!

原文由 user6655908 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 536
2 个回答

很难确定这里发生了什么,因为后台有很多代码,但错误消息告诉您输入流中有无效字符。代码 x81 在代码页 1252 中未定义,这是有效的代码页。那是西欧/美国的默认代码页。该程序试图将假定的代码页字符串转换为 Unicode,因此失败了。

我的猜测是输入实际上没有用 cp 1252 编码。在统计信息当前代码页或 Unicode 模式中有些东西搞砸了。您可能需要将 SPSS Statistics 区域设置设置为不同的内容或打开或关闭 Unicode 模式。有关如何执行此操作的信息,请参阅命令语法参考中的 SET LOCALE 和 SET UNICODE。

如果您能详细说明您的语言环境以及此代码的作用,我们也许能够提供更多信息。

原文由 JKP 发布,翻译遵循 CC BY-SA 3.0 许可协议

在具有相同错误消息的类似问题上,我做了类似的事情,它对我很有用。

 with open(workfile, 'r', encoding='utf-8') as f:
    read_data = f.read()
f.close()

原文由 andsa 发布,翻译遵循 CC BY-SA 4.0 许可协议

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