Python 语法错误:以“\x91”开头的非 UTF-8 代码

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/23092176/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 02:13:35  来源:igfitidea点击:

SyntaxError: Non-UTF-8 code starting with '\x91'

pythonutf-8

提问by GrapeSoda3

I am trying to write a binary search program for a class, and I am pretty sure that my logic is right, but I keep getting a non-UTF-8 error. I have never seen this error and any help/clarification would be great! Thanks a bunch.

我正在尝试为一个类编写一个二进制搜索程序,我很确定我的逻辑是正确的,但我不断收到非 UTF-8 错误。我从未见过这个错误,任何帮助/澄清都会很棒!谢谢一堆。

Here's the code.

这是代码。

def main():


    str names = [‘Ava Fischer', ‘Bob White', ‘Chris Rich', ‘Danielle Porter', ‘Gordon Pike', ‘Hannah Beauregard', ‘Matt Hoyle', ‘Ross Harrison', ‘Sasha Ricci', ‘Xavier Adams']

    binarySearch(names, input(str("Please Enter a Name.")))

    print("That name is at position "+position)


def binarySearch(array, searchedValue):

    begin = 0 
    end = len(array) - 1 
    position = -1 
    found = False

    while !=found & begin<=end:
        middle=(begin+end)/2

        if array[middle]== searchedValue:
            found=True 
            position = middle
        elif array[middle] >value:
            end=middle-1
        else:
            first =middle+1
return position

采纳答案by Martijn Pieters

Your editor replaced '(ASCII 39) with U+2018 LEFT SINGLE QUOTATION MARKcharacters, usually a sign you used Word or a similar wordprocessor instead of a plain text editor; a word processor tries to make your text 'prettier' and auto-replaces things like simple quotes with fancy ones. This was then saved in the Windows 1252 codepage encoding, where the fancy quotes were saved as hex 91 characters.

您的编辑器将'(ASCII 39)替换为U+2018 LEFT SINGLE QUOTATION MARK字符,通常是您使用 Word 或类似文字处理器而不是纯文本编辑器的标志;文字处理器试图使您的文本“更漂亮”,并自动用花哨的引号替换简单的引号之类的内容。然后将其保存在Windows 1252 代码页编码中,其中花哨的引号保存为 16 进制 91 字符。

Python is having none of it. It wants source code saved in UTF-8 and using 'or "for quotation marks. Use notepad, or better still, IDLE to edit your Python code instead.

Python 一无所有。它希望以 UTF-8 格式保存源代码并使用'"作为引号。使用记事本或更好的 IDLE 来编辑您的 Python 代码。

You have numerous other errors in your code; you cannot use spaces in your variable names, for example, and Python uses and, not &as the boolean AND operator. !=is an operator requiring 2 operands (it means 'not equal', the opposite of ==), the boolean NOT operator is called not.

您的代码中还有许多其他错误;例如,您不能在变量名中使用空格,并且 Python 使用and, 而不是&作为布尔 AND 运算符。!=是一个需要 2 个操作数的运算符(它的意思是“不等于”,与 的相反==),布尔非运算符被称为not

回答by u7278937

Add this line at the top of you code. It may work.

在代码顶部添加此行。它可能会起作用。

    # coding=utf8

回答by agcala

The character you are beginning your constant strings with is not the right string delimiter.You are using

您开始常量字符串的字符不是正确的字符串分隔符。您正在使用

‘Ava Fischer'   # ‘ and ' as string delimiters

when it should have been either

当它应该是

'Ava Fischer'   # Ascii 39 as string delimiter

or maybe

或者可能

"Ava Fischer"   # Ascii 34 as string delimiter

回答by Michael Kiros

If you're using Notepad++, click Encodingat the top and choose Encode in UTF-8.

如果您使用的是 Notepad++,请单击Encoding顶部的 并选择Encode in UTF-8