如何在Python3中将utf8代码转换为unicode代码
我想生成所有utf8字符列表。 我写了下面的代码,但效果不好。 我认为这是因为如何在Python3中将utf8代码转换为unicode代码,python,python-3.x,unicode,utf-8,Python,Python 3.x,Unicode,Utf 8,我想生成所有utf8字符列表。 我写了下面的代码,但效果不好。 我认为这是因为chr()需要unicode编码,但我给出了utf8编码。 我想我必须把utf8码转换成unicode码,但我不知道怎么做。 我该怎么办?还是你知道更好的方法 def utf8_2byte(): characters = [] # first byte range: [C2-DF] for first in range(0xC2, 0xDF + 1): # second byte
chr()
需要unicode编码,但我给出了utf8编码。
我想我必须把utf8码转换成unicode码,但我不知道怎么做。
我该怎么办?还是你知道更好的方法
def utf8_2byte():
characters = []
# first byte range: [C2-DF]
for first in range(0xC2, 0xDF + 1):
# second byte range: [80-BF]
for second in range(0x80, 0xBF + 1):
num = (first << 8) + second
line = [hex(num), chr(num)]
characters.append(line)
return characters
实际上:
[0xc380,쎀]
[0xc381,쎁]
[0xc382,쎂]
在Python3中,
chr
采用unicode码点,而不是utf-8
<代码>U+C380在韩文范围内。相反,您可以使用bytearray
进行解码
>>> bytearray((0xc3, 0x80)).decode('utf-8')
'À'
还有其他方法,如
struct
或ctypes
。任何汇编本机字节并将其转换为字节的操作都可以。Unicode是一个字符集,而UTF-8是一种编码,它是一种在机器级别将代码点从Unicode编码为字节的算法,反之亦然
代码点0xc380
为쎀代码>采用Unicode标准
使用UTF-8编码解码时,字节0xc380
为À
>>> s = "쎀"
>>> hex(ord(s))
'0xc380'
>>> b = bytes.fromhex("C3 80")
>>> b
b'\xc3\x80'
>>> b.decode("utf8")
'À'
>>> bytes((0xc3, 0x80)).decode("utf8")
'À'
非常感谢。我明白了。UnicodeU+c380
是代码点<代码>1100001110000000
(0xc380)是使用unicode代码点的UTF-8编码样式解码的字节数组。你的代码运行得很好。非常感谢,非常感谢。我使用bytes()
和decode()
方法。
>>> s = "쎀"
>>> hex(ord(s))
'0xc380'
>>> b = bytes.fromhex("C3 80")
>>> b
b'\xc3\x80'
>>> b.decode("utf8")
'À'
>>> bytes((0xc3, 0x80)).decode("utf8")
'À'