티스토리 뷰

python/파일 입출력

file 입출력 시에 인코딩 오류해결

니냐니 ค^•ﻌ•^ค 2020. 6. 30. 13:10

현재 사용: vscode 에서 python3 사용

 

<한글 파일 깨짐 현상>

1. 파일의 맨 위에 주석 (   #-*- coding:utf-8 -*-  ) 삽입!

      • 아래의 모든 문자열이 UTF-8이라는 것을 암시하는 코드이다.

2. UNICODE로 디코딩, 그 후에 인코딩

      • 파이썬이 문자열을 인식하는 방식이 Unicode라 한다.
      • 따라서 문자열의 decode 어떤 인코딩 (cp949, iso-8859-1, utf-8 등등) Unicode로 환원하는 것이고,
      • 다시 하는 encoding 이란, Unicode문자열을 특정 방식으로 encoding하는 것으로,

Ex) 어딘가에서 파싱한 한글 문자열 ‘A’에서 한글로 검색 시에, 인코딩과 문자열의 인코딩이 달라서 검색을 할 수 없게된다. 따라서,

, A = A.decode('cp949').encode('utf-8')

 

 Cp949로 인코딩된 A라는 문자열을, Unicode 라는 파이썬의 문자열로 디코딩하고,  utf-8로 다시 인코딩해준다.

이때, 여기서 A라는 문자열의 인코딩 방식을 알아야 하는데, 대체로, 한글 문자열 일때, 읽히면, 보통 cp949 인코딩 방식일 경우가 많다.

 

3. 외부 라이브러리 기본 인코딩 방식

파일의 맨 위에 주석을 삽입하는 것이 좋긴 하나... 외부에서 불러온 라이브러리 각 파일에 모두 그 짓을 할 수가 없으므로 아래 코드를 써 주면 그와 똑같이 동작함.

 

import sys

reload(sys) --> python 3 에서 reload 함수가 imp모듈로 옮겨져서

위에 from imp import reload 추가해야 한다.

 

< 위 세가지를 조합해 보면, 일단 파일 맨 위에다가 아래와 같이 집어넣고 시작 >

#-*- coding:utf-8 -*-

import sys

from importlib import reload

reload(sys)

 


하지만!! 여기서 장고로 만약 열어보면 다시 오류.. 그래서

 

댓글