파이썬(Python)/문법

[Python] String 인코딩, 디코딩 함수 (encode, decode)

끄적끄적아무거나 2021. 10. 13. 13:51
반응형

 

목차

     

     

     

     


     

     

    [Python] String 인코딩, 디코딩 함수 (encode, decode)

     

     

    이번 포스트에서는 스티링의 문장을 인코딩하거나 디코딩해서 binary(바이너리)로 변경하는 함수에 대해 알아보겠습니다. encode() 와 decode()는 string 내부에 내장된 함수 입니다. 

     

    encoding에는 많은 종류가 있는데 대표적으로 사용되는 encoding은 아래와 같습니다.

     

    • utf-8
    • utf-16
    • euc-kr
    • ascii

     

     

     

    Encode, Decode 함수 Syntax

     

     

    • Str.encode(encoding='UTF-8',errors='strict')
    • Str.decode(encoding='UTF-8',errors='strict')

     

    encoding 속성의 값은 앞서 언급한 encoding 종류를 입력하면 됩니다.

     

     

    error의 속성값은 아래와 같습니다.

     

    • 'backslashreplace' : 에러 발생시 삭제로 변환
    • 'ignore' : 에러 발생 시 무시
    • 'namereplace' : Text 설명으로 변경
    • 'strict' : Default 값, error 띄움
    • 'replace' : 에러 발생 시 ? 물음표로 변경
    • 'xmlcharrefreplace' : 에러 발생시 xml 캐릭터로 변경

     

     

     

     

    예제 코드 구현하기 (1) - 정상 동작

     

     

    코드>>

    import base64
    
    words = "안녕 hello"
    
    encoded_words = words.encode(encoding="utf-8", errors="strict")
    print(encoded_words)
    decoded_words = encoded_words.decode("utf-8", errors="strict")
    print(decoded_words)

     

    결과>>

    b'\xec\x95\x88\xeb\x85\x95 hello'
    안녕 hello

     

     

     

    예제 코드 구현하기 (2) - 에러 띄우기

     

     

    코드>>

    import base64
    
    words = "안녕 hello"
    
    encoded_words = words.encode(encoding="ascii", errors="replace")
    print(encoded_words)
    decoded_words = encoded_words.decode("ascii", errors="replace")
    print(decoded_words)

     

    결과>>

    b'?? hello'
    ?? hello

     

    만일 Default 값 "strict"로 에러를 띄우면 아래와 같ㅌ은 경구 메세지가 나옵니다.

    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

     

     

     

     

     

    반응형