Python3字符串编码

2024-10-03 09:15:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是Python3,我不知道这里发生了什么:

x=[0xc2,0x50]
print('----list2bytes------')
for i in bytes(x):
  print(i)

s=''
for i in x:
  s+=chr(i)

print('----string2bytes----')
for i in s.encode():
  print(i)

print('----string2ord------')
for i in s:
  print(ord(i))

----列表2字节----
194年
80
----字符串2字节----
195年
130
80
----字符串2或---
194年
80个

为什么字节在字符串.编码()? 你知道吗


Tags: 字符串in编码列表for字节bytespython3
1条回答
网友
1楼 · 发布于 2024-10-03 09:15:37

这里涉及两个不同的概念:

  • chr()函数将在指定的^{}处为您提供character。您可以查找代码点194 here,它是LATIN CAPITAL LETTER A WITH CIRCUMFLEX(这里没有意外)。你知道吗
  • 向字符串中添加字符将添加该字符,而不是向该字符串中添加原始字节。找回字节需要编码。你知道吗
  • 当您对字符串调用.encode()时,您会得到它的UTF-8编码字节。这不仅仅是代码点的串联。你知道吗
  • 字符Â的UTF-8编码有两个字节,因为它的Ucode值大于128。第一个字节是192 + (Ucode-value div 64)==192 + (194 div 64),这也是194==0xc2(增加了混乱)。第二个字节是128 + (Ucode-value div 64)==128 + (194 % 64)==0x82。你知道吗

    因此字符Â编码为UTF-8中的0xc2, 0x82。你知道吗

    第二个字符的(P)Ucode值低于128,所以只是添加了它。因此0xc2, 0x82, 0x50==194, 130, 80是编码为UTF-8的整个字符串。你知道吗

    在UTF-8中,编码点序列194, 80编码为194, 130, 80是完全巧合的,给人的印象是130只是插入了。

  • 调用ord()将再次为每个字符提供Unicode代码点。字符LATIN CAPITAL LETTER A WITH CIRCUMFLEX的Unicode码位的整数表示是194。你知道吗

相关问题 更多 >