【问题标题】:Syntax error: Non-UTF-8 code starting with '\xe1"语法错误:以 '\xe1" 开头的非 UTF-8 代码
【发布时间】:2017-12-30 19:43:27
【问题描述】:

技术上:

我只想通过“plotly”、“getting started”示例(https://plot.ly/dash/getting-started)使用“Dash”,但我不能。有什么假设吗?

我无法在标题中定义更多错误。

(我不想给你不准确的假设。谢谢你可能的回答:))

【问题讨论】:

  • 从不使用记事本写代码开始。记事本无法写入正确的 UTF-8 文件。使用实际的文本编辑器。首先,您可以使用 Python 安装附带的 IDLE,它甚至具有语法高亮和自动完成功能。还有……这是什么 Windows 版本?
  • 您的源代码被读取为 UTF-8,因为您告诉 Python(您在顶部添加了编码注释),但您将其保存为不同的编码。使用文本编辑器保存为 UTF-8,或将标头中的编码更改为正确。

标签: python python-3.x utf-8 plotly plotly-dash


【解决方案1】:

您的文本编辑器尚未将文件保存为 UTF-8,因此 Python 无法读取该文件。

您有 3 个选项:

  • 更改第一行以使用正确的编解码器。它可能是Windows Codepage 1252,假设您使用的是 Windows,并且é 字符在该编解码器中被编码为 0xE1:

    # -*- coding: cp1252 -*-
    
  • 使用可让您指定保存时使用的编码的文本编辑器,如 Notepad++ 或 Sublime Text 或 Visual Studio,并确保文件实际保存为 UTF-8。

    李>
  • 在文件中仅使用 ASCII 码点; u'Montréal' 值也可以使用 é 字符的 \xhh\uhhhh 转义序列来指定:

    u'Montr\u00e9al'
    

【讨论】:

  • 谢谢你的回答,但我相信,还有更大的问题。我下载了 Notedpad++,将编码更改为 UTF-8,保存甚至删除了“蒙特利尔”中的“é”。现在它显示:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd7 in position 11: invadlid continuation byte ...相信我,我已经搜索了很多“答案”
  • 顺便说一句...我的编辑器怎么可能保存错了,没有数据? 0 口
  • @MartinMelichar:对不起,我忍不住调试了;我无法确切地看到您是如何创建该文件或它包含什么的。
  • @MartinMelichar:0 字节长度的文件也不会导致UnicodeDecodeError;显然,您有一个至少有 11 个字节的文件,以便在位置 11 处出现解码错误。
  • 系统消息是捷克语或一些相关语言,所以我猜是cp1250。也许也可以看看cdn.rawgit.com/tripleee/8bit/master/encodings.html#e9
【解决方案2】:

错误实际上是因为我的计算机名称。

它被命名为“Timemachine×2”,但是“×”(不是“x”)不是 unicode 字符。

所以我简单地将我的计算机重命名为 Timemachine2,它开始正常工作。

错误与代码本身无关。

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2014-05-30
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 2019-11-23
    • 2021-08-14
    • 1970-01-01
    • 2015-10-21
    相关资源
    最近更新 更多