우선 유니코드에 대해 이해를 해야한다.
컴퓨터는 기본적으로 '0'과'1'을 통해 작동하기 떄문에 컴퓨터가 문자를 표현하기 위해선 별도의 표현할 수 있는 체계가 필요하다.
encode : 문자 -> byte로 전환
decode : byte -> 문자로 전환
유니코드의 사전적인 뜻은 '전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준'이다.
전 세계 프로그래머들이 각자의 언어체계에 따른 유니코드를 사용한다. 그래야 다른 언어를 프로그램에 사용할 수 있기 때문이다.
python3는 기본적으로 UTF-8 유니코드 방법을 취한다.
UTF-8 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
python3는 모든 문자열을 unicode형식으로 취급한다.
>>> s = "김이최박"
>>> s1 = u"김이최"
>>> type(s);type(s1)
<class 'str'>
<class 'str'>
해당 문자열을 utf-8 형식으로 인코딩한다.
>>> s = s.encode("utf-8")
>>> s1 = s1.encode("utf-8")
s,s1
(b'\xea\xb9\x80\xec\x9d\xb4\xec\xb5\x9c\xeb\xb0\x95',
b'\xea\xb9\x80\xec\x9d\xb4\xec\xb5\x9c')
b' = byte 표현방식,
>>> s = s.decode("utf-8")
>>> s
'김이최박'
>>> s1 = s1.decode("utf-8")
>>> s1
'김이최'
코드 변환 한 것을 16진수로 나타내고, UTF-8 유니코드 방식으로 인코드를 했으니 반대로 디코드를 할 경우 한글 언어가 출력 되는것을 확인 할 수 있다.
import codecs
import os
import sys
class Test:
def b_write(self):
with open("file_test02.txt","wb") as f:
str = "김이최박"
f.write(bytes(str,'utf-8')) # 1 byte 이내 코드 값으로 변환, 아스키
def b_read(self):
with open("file_test02.txt", "rb") as f:
s = f.read()
print(s.hex(),s.decode('utf-8'))
if __name__ == '__main__':
a = Test()
a.b_write()
a.b_read()
eab980ec9db4ecb59cebb095 김이최박
'IT > Python' 카테고리의 다른 글
파이썬 기본 개요 - CSV (0) | 2021.05.07 |
---|---|
파이썬 기본 개요 - 오류, Exception (0) | 2021.05.06 |
파이썬 기본 개요 - Pickling/Unpickling (0) | 2021.05.04 |
파이썬 기본 개요 - txt 파일 다루기 (0) | 2021.05.03 |
파이썬 기본 개요 - OS Module, 함수 (0) | 2021.05.03 |