Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么b(字符串)和字节(字符串,utf-8’;)在Python中给出不同的结果? byte_1=b'\xc0*\xael_Python_Python 3.x - Fatal编程技术网

为什么b(字符串)和字节(字符串,utf-8’;)在Python中给出不同的结果? byte_1=b'\xc0*\xael

为什么b(字符串)和字节(字符串,utf-8’;)在Python中给出不同的结果? byte_1=b'\xc0*\xael,python,python-3.x,Python,Python 3.x,发生这种情况是因为@mark指出,byte_1是一个字节字符串。当您对字节2使用bytes()方法时,实际上是将编码指定为unicode或utf-8。如果您本想为字节2选择不同的编码,如ISO-8859-1,那么字节2和字节3就不一样了。由于encode()方法具有utf-8的默认编码,因此byte_2==byte_3发生这种情况是因为@mark指出,byte_1是一个字节字符串。当您对字节2使用bytes()方法时,实际上是将编码指定为unicode或utf-8。如果您本想为字节2选择不同的编

发生这种情况是因为@mark指出,
byte_1
是一个字节字符串。当您对
字节2
使用
bytes()
方法时,实际上是将编码指定为unicode或utf-8。如果您本想为
字节2
选择不同的编码,如ISO-8859-1,那么
字节2
字节3
就不一样了。由于
encode()
方法具有utf-8的默认编码,因此
byte_2==byte_3
发生这种情况是因为@mark指出,
byte_1
是一个字节字符串。当您对
字节2
使用
bytes()
方法时,实际上是将编码指定为unicode或utf-8。如果您本想为
字节2
选择不同的编码,如ISO-8859-1,那么
字节2
字节3
就不一样了。由于
encode()
方法具有utf-8的默认编码,因此
byte_2==byte_3
byte_1
已经是字节字符串
byte_2
byte_3
是编码为字节字符串的Unicode字符串

“\xc0”
是一个转义码,表示Unicode代码点U+00C0。
b'\xc0'
是一个转义码,表示字节值0xC0

在UTF-8中,U+007F以上的Unicode代码点以两个或更多字节编码,因此
'\xc0'.encode()
返回两个字节
b'\xc3\x80'

如果要获得等效字符串,请使用
latin1
编解码器。Latin-1(又称ISO-8859-1)字符集占据Unicode标准的前256个代码点,因此从
byte_1=b'\xc0*\xael
byte_1
已经是一个字节字符串
byte_2
byte_3
是编码为字节字符串的Unicode字符串

“\xc0”
是一个转义码,表示Unicode代码点U+00C0。
b'\xc0'
是一个转义码,表示字节值0xC0

在UTF-8中,U+007F以上的Unicode代码点以两个或更多字节编码,因此
'\xc0'.encode()
返回两个字节
b'\xc3\x80'

如果要获得等效字符串,请使用
latin1
编解码器。Latin-1(又称ISO-8859-1)字符集占据Unicode标准的前256个代码点,因此从
byte_1=b'\xc0*\xael1已经是一个字节字符串。2和3是编码为字节字符串的Unicode字符串。@MarkTolonen谢谢。如何将2或3转换为1?1已经是字节字符串。2和3是编码为字节字符串的Unicode字符串。@MarkTolonen谢谢。如何将2或3转换为1?谢谢。字符串
my_string
应该是什么,以便我可以将其转换为等于
byte_1
?@3123您可以尝试使用
chardet
模块检测
byte_1
的编码,谢谢。使用
chardet
我发现
byte_1
的编码是
windows-1252
。然而,当我执行
my_bytes.decode('windows-1252')
时,我得到了
UnicodeDecodeError:“charmap”编解码器无法解码第7位的字节0x81:字符映射到
@3123,这是因为unicode中的字节序列0x81没有等效字符。在win1252编码中,谢谢。字符串
my_string
应该是什么,以便我可以将其转换为等于
byte_1
?@3123您可以尝试使用
chardet
模块检测
byte_1
的编码,谢谢。使用
chardet
我发现
byte_1
的编码是
windows-1252
。然而,当我执行
my_bytes.decode('windows-1252')
时,我得到了
UnicodeDecodeError:“charmap”编解码器无法解码第7位的字节0x81:字符映射到
@3123,这是因为unicode中的字节序列0x81没有等效字符。在win1252编码中,谢谢。这正是我想要的。谢谢。这正是我要找的。
byte_1 = b'\xc0*\xael<\x9e\xcf\x81\xa2\xd8\xb5\xe3\x1d\xe1\xaa8'
byte_2 = bytes('\xc0*\xael<\x9e\xcf\x81\xa2\xd8\xb5\xe3\x1d\xe1\xaa8', 'utf-8')
byte_3 = ('\xc0*\xael<\x9e\xcf\x81\xa2\xd8\xb5\xe3\x1d\xe1\xaa8').encode()