如何在Python3中将utf8代码数字转换为unicode代码数字

2024-04-19 04:11:54 发布

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

我要生成所有utf8字符列表。 我写了下面的代码,但效果不好。 我以为是因为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

我希望:

^{pr2}$

实际上:

[0xc380,쎀]
[0xc381,쎁]
[0xc382,쎂]

Tags: 代码in列表forlineunicoderangebyte
2条回答

Unicode是一个字符集,而UTF-8是一种编码,它是一种在机器级别将代码点从Unicode编码到字节的算法,反之亦然。在

在Unicode标准中,0xc380。在

当使用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")
'À'

在python3中,chr采用unicode代码点,而不是utf-8U+C380在朝鲜文范围内。相反,您可以使用bytearray进行解码

>>> bytearray((0xc3, 0x80)).decode('utf-8')
'À'

还有其他方法,比如struct或{}。任何组装本机字节并将其转换为bytes的操作都可以。在

相关问题 更多 >