解码错误值错误:以16为基数的int()的文本无效:'\xe8';用python

解码错误值错误:以16为基数的int()的文本无效:'\xe8';用python,python,Python,我有一个unicode字符串,因此我想检查字符是连续位还是起始位,以便通过简单的程序计算unicode字符的数量 #!/usr/bin/env python # -*- coding: utf-8 -*- def arg(str): i = 0 j = 0 print i for test in str: print test value = int(test,16) if (value & 0xc0) != 0x80:

我有一个unicode字符串,因此我想检查字符是连续位还是起始位,以便通过简单的程序计算unicode字符的数量

#!/usr/bin/env python
# -*- coding: utf-8 -*-



def arg(str):

  i = 0
  j = 0
  print i

  for test in str:
    print test
    value = int(test,16)
    if (value & 0xc0) != 0x80:
        j=j+1
        print "hello"

  print j
  #return j






def main():
    print "inside main"

    new = "象形字"

    charlen = len(new)
    print charlen
    tes = new.decode('utf-8')

    declen = len(tes)
    print declen


    data = tes.encode('utf-8')


    # print self_len

    enclen = len(data)
    print enclen

    print data

    arg(data)







if __name__ == "__main__":
    main()
运行代码会导致如下错误:

象形字[Decode error - output not utf-8]
Traceback (most recent call last):
  File "/Users/laxmi518/Documents/laxmi/code/C/python-c/python_unicode.py", line 69, in <module>
    main()
  File "/Users/laxmi518/Documents/laxmi/code/C/python-c/python_unicode.py", line 52, in main
    arg(data)
  File "/Users/laxmi518/Documents/laxmi/code/C/python-c/python_unicode.py", line 16, in arg
    value = int(test,16)
ValueError: invalid literal for int() with base 16: '\xe8'
[Finished in 0.1s with exit code 1]
象形字[解码错误-输出不是utf-8]
回溯(最近一次呼叫最后一次):
文件“/Users/laxmi518/Documents/laxmi/code/C/python-C/python_unicode.py”,第69行,在
main()
文件“/Users/laxmi518/Documents/laxmi/code/C/python-C/python_unicode.py”,主文件第52行
arg(数据)
文件“/Users/laxmi518/Documents/laxmi/code/C/python-C/python_unicode.py”,第16行,arg
值=int(测试,16)
ValueError:基为16的int()的文本无效:'\xe8'
[在0.1s内完成,退出代码为1]
UTF-8字节不是十六进制字符串。它们只是字节,Python将使用文本转义语法显示ASCII可打印范围之外的字节。这只是一个调试显示符号

使用获取字节的数值:

value = ord(test)
通过该更改,在Mac OS X(为UTF-8配置)上的终端上运行脚本将输出:

问号由终端生成;从UTF-8 ByTestStream打印单个字节意味着打印的是不完整的UTF-8代码单元,因此终端不知道如何处理这些单元,而是生成一个占位符字符

打印
repr()
函数的输出,而不是直接打印
test

print repr(test)
要获得这些字节的
\xhh
十六进制表示法,请执行以下操作:

inside main
9
3
9
象形字
0
'\xe8'
hello
'\xb1'
'\xa1'
'\xe5'
hello
'\xbd'
'\xa2'
'\xe5'
hello
'\xad'
'\x97'
3
UTF-8字节不是十六进制字符串。它们只是字节,Python将使用文本转义语法显示ASCII可打印范围之外的字节。这只是一个调试显示符号

使用获取字节的数值:

value = ord(test)
通过该更改,在Mac OS X(为UTF-8配置)上的终端上运行脚本将输出:

问号由终端生成;从UTF-8 ByTestStream打印单个字节意味着打印的是不完整的UTF-8代码单元,因此终端不知道如何处理这些单元,而是生成一个占位符字符

打印
repr()
函数的输出,而不是直接打印
test

print repr(test)
要获得这些字节的
\xhh
十六进制表示法,请执行以下操作:

inside main
9
3
9
象形字
0
'\xe8'
hello
'\xb1'
'\xa1'
'\xe5'
hello
'\xbd'
'\xa2'
'\xe5'
hello
'\xad'
'\x97'
3
UTF-8字节不是十六进制字符串。它们只是字节,Python将使用文本转义语法显示ASCII可打印范围之外的字节。这只是一个调试显示符号

使用获取字节的数值:

value = ord(test)
通过该更改,在Mac OS X(为UTF-8配置)上的终端上运行脚本将输出:

问号由终端生成;从UTF-8 ByTestStream打印单个字节意味着打印的是不完整的UTF-8代码单元,因此终端不知道如何处理这些单元,而是生成一个占位符字符

打印
repr()
函数的输出,而不是直接打印
test

print repr(test)
要获得这些字节的
\xhh
十六进制表示法,请执行以下操作:

inside main
9
3
9
象形字
0
'\xe8'
hello
'\xb1'
'\xa1'
'\xe5'
hello
'\xbd'
'\xa2'
'\xe5'
hello
'\xad'
'\x97'
3
UTF-8字节不是十六进制字符串。它们只是字节,Python将使用文本转义语法显示ASCII可打印范围之外的字节。这只是一个调试显示符号

使用获取字节的数值:

value = ord(test)
通过该更改,在Mac OS X(为UTF-8配置)上的终端上运行脚本将输出:

问号由终端生成;从UTF-8 ByTestStream打印单个字节意味着打印的是不完整的UTF-8代码单元,因此终端不知道如何处理这些单元,而是生成一个占位符字符

打印
repr()
函数的输出,而不是直接打印
test

print repr(test)
要获得这些字节的
\xhh
十六进制表示法,请执行以下操作:

inside main
9
3
9
象形字
0
'\xe8'
hello
'\xb1'
'\xa1'
'\xe5'
hello
'\xbd'
'\xa2'
'\xe5'
hello
'\xad'
'\x97'
3


仍然使用ord[Decode error-output not utf-8]@user3545251给出错误:其他东西给出了该输出,这不是Python错误。您在哪个控制台或终端上运行此操作?@user3545251:您正在打印不完整的UTF-8代码单元(单个字节),因此这取决于您的控制台如何处理这些单元。我正在使用macmachine@user3545251:但不是终端,至少与我使用的设置不同。您使用的是IDE还是文本编辑器?IDLE、PyCharm或SublimiteText?仍然使用ord[Decode error-output not utf-8]@user3545251给出错误:其他东西给出了该输出,这不是Python错误。您在哪个控制台或终端上运行此操作?@user3545251:您正在打印不完整的UTF-8代码单元(单个字节),因此这取决于您的控制台如何处理这些单元。我正在使用macmachine@user3545251:但不是终端,至少与我使用的设置不同。您使用的是IDE还是文本编辑器?IDLE、PyCharm或SublimiteText?仍然使用ord[Decode error-output not utf-8]@user3545251给出错误:其他东西给出了该输出,这不是Python错误。您在哪个控制台或终端上运行此操作?@user3545251:您正在打印不完整的UTF-8代码单元(单个字节),因此这取决于您的控制台如何处理这些单元。我正在使用macmachine@user3545251:但不是终端,至少与我使用的设置不同。您使用的是IDE还是文本编辑器?IDLE、PyCharm或SublimiteText?仍然使用ord[Decode error-output not utf-8]@user3545251给出错误:其他东西给出了该输出,这不是Python错误。您在哪个控制台或终端上运行此操作?@user3545251:您正在打印不完整的UTF-8代码单元(单个字节),因此这取决于您的控制台如何处理这些单元。我正在使用macmachine@user3545251:但不是终端,至少与我使用的设置不同。您使用的是IDE还是文本编辑器?闲散的,还是迷人的,崇高的?