복붙노트

[PYTHON] UTF-8 8 진수를 유니 코드 코드 포인트로 변환

PYTHON

UTF-8 8 진수를 유니 코드 코드 포인트로 변환

UTF-8 8 중 옥텟 세트가 있고이를 유니 코드 코드 포인트로 다시 변환해야합니다. 파이썬에서는 어떻게 할 수 있습니까?

예 : UTF-8 옥텟 [ '0xc5', '0x81']은 0x141 코드 포인트로 변환되어야합니다.

해결법

  1. ==============================

    1.Python 3.x에서 str은 유니 코드 텍스트의 클래스이고 bytes는 8 진수를 포함하는 클래스입니다.

    Python 3.x에서 str은 유니 코드 텍스트의 클래스이고 bytes는 8 진수를 포함하는 클래스입니다.

    "옥텟"으로 '0xc5'( '\ xc5'가 아닌) 형식의 문자열을 의미하는 경우 다음과 같이 바이트로 변환 할 수 있습니다.

    >>> bytes(int(x,0) for x in ['0xc5', '0x81'])
    b'\xc5\x81'
    

    그런 다음 str 생성자를 사용하여 str (즉 : 유니 코드)로 변환 할 수 있습니다.

    >>> str(b'\xc5\x81', 'utf-8')
    'Ł'
    

    ... 또는 bytes 객체에서 .decode ( 'utf-8')을 호출하여 다음을 수행 할 수 있습니다.

    >>> b'\xc5\x81'.decode('utf-8')
    'Ł'
    >>> hex(ord('Ł'))
    '0x141'
    

    3.x 이전에는 str 형식이 바이트 배열이고 유니 코드는 유니 코드 텍스트 용이었습니다.

    다시 말하지만, "옥텟"으로 '0xc5'( '\ xc5'가 아닌) 형식의 문자열을 의미하는 경우 다음과 같이 변환 할 수 있습니다.

    >>> ''.join(chr(int(x,0)) for x in ['0xc5', '0x81'])
    '\xc5\x81'
    

    그런 다음 생성자를 사용하여 유니 코드로 변환 할 수 있습니다.

    >>> unicode('\xc5\x81', 'utf-8')
    u'\u0141'
    

    ... 또는 str에서 .decode ( 'utf-8')를 호출하여 :

    >>> '\xc5\x81'.decode('utf-8')
    u'\u0141'
    
  2. ==============================

    2.lovely 3.x에서는 모든 strs가 유니 코드이고 바이트는 strs가 사용했던 것과 같습니다.

    lovely 3.x에서는 모든 strs가 유니 코드이고 바이트는 strs가 사용했던 것과 같습니다.

    >>> s = str(bytes([0xc5, 0x81]), 'utf-8')
    >>> s
    'Ł'
    >>> ord(s)
    321
    >>> hex(ord(s))
    '0x141'
    

    당신이 요구 한 것은 무엇입니까.

  3. ==============================

    3.

    l = ['0xc5','0x81']
    s = ''.join([chr(int(c, 16)) for c in l]).decode('utf8')
    s
    >>> u'\u0141'
    
  4. ==============================

    4.

    >>> "".join((chr(int(x,16)) for x in ['0xc5','0x81'])).decode("utf8")
    u'\u0141'
    
  5. from https://stackoverflow.com/questions/1864701/convert-utf-8-octets-to-unicode-code-points by cc-by-sa and MIT license