【问题标题】:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 2: invalid start byteUnicodeDecodeError:“utf-8”编解码器无法解码位置 2 中的字节 0xb5:无效的起始字节
【发布时间】:2021-03-17 15:39:44
【问题描述】:

您好,我正在 cmd 中尝试“python manage.py runserver”命令
但它给了我这个eroor:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 2: invalid start byte"

位置

“socket.py”,第 791 行,在 getfqdn
主机名、别名、ipaddrs = gethostbyaddr(name)

这是编辑器中的原始代码:

def getfqdn(name=''):
     name = name.strip()
    if not name or name == '0.0.0.0':
        name = gethostname()
    try:
        hostname, aliases, ipaddrs = gethostbyaddr(name)
    except error:
        pass
    else:
        aliases.insert(0, hostname)
        for name in aliases:
            if '.' in name:
                break
        else:
            name = hostname
    return name

我不知道如何绕过这个错误,因为我不确定我是否理解代码。
(第一次提问,感谢您的帮助!)

【问题讨论】:

  • 这是 Python 中的一个错误; bugs.python.org/issue26227
  • 感谢@BiOS!这实际上只是一个用户名问题,现在程序可以工作了!

标签: python


【解决方案1】:

看起来namesocket 模块中作为gethostbyaddr() 的参数给出时包含无效字符。

这可能是因为您的主机名确实包含特殊字符。您可以通过打开终端或命令提示符并输入hostname 来检查这一点

如果你得到这样的结果:

računalo-codax 

(以上是克罗地亚语,意为“Codax-computer”)

然后您需要更改您的计算机名称以确保它不包含任何像č 这样的特殊字符。只有纯字母a-zA-Z 和数字0-9,或破折号-

【讨论】:

  • 这是个可疑的建议。也许更好的解决方案是确保您只在计算机名称中使用 UTF-8,因为它可以在平台之间移植,并且越来越成为 Internet 上 Unicode 的事实上的标准。同时,如果您知道网络管理员在命名计算机时使用的编码,请将您的库告知decode('windows-1250')(假设这是您要解码的实际编码)。
  • 你可能会称其为可疑的建议,但它确实是我自己解决的方法。
  • 哦,我确定它有效,但屈服于帝国主义压力是一种没有吸引力的解决方法。我们应该能够使用我们在私人计算机名称中选择的任何字符。
  • 感谢您的帮助,我已经解决了问题!只是因为用户名...
猜你喜欢
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 2018-01-16
  • 2021-03-05
  • 2022-05-30
  • 2021-12-01
  • 2016-05-13
  • 2017-05-03
相关资源
最近更新 更多