프로그래밍 이야기
파이썬(Python) - 폴더 아래 소스코드 인코딩 일괄 변환 스크립트
원소랑
2023. 11. 21. 01:56
유니티 엔진으로 개발하던 프로젝트의 소스코드가 어째서인지 어느 순간 인코딩이 바뀌어 버렸습니다. 원인은 알 수가 없는 상황. 코드는 모두 utf-8 인코딩으로 관리하고 있었는데, 갑자기 인코딩이 변경되고 코드 내에 한글이 모두 깨져있는 상황.
그래서, 일단 파이썬으로 소스코드 전체 일관 인코딩을 변경해주는 코드를 짜서 돌렸습니다. 아래는 원본 소스. 폴더 이름과 소스코드 확장자, 인코딩을 적절히 수정해서 돌리면 됩니다.
그리고 chardet 모듈을 사용하기 때문에 pip install chardet 커맨드로 chardet 모듈을 설치해야 합니다.
import os
import codecs
import chardet
# 현재 경로 아래의 scripts 폴더 내 파일들의 인코딩을 변경합니다.
directory = 'Scripts' # 변경할 디렉토리 이름
# 변경할 인코딩과 변환 후 파일 형식
target_encoding = 'utf-8'
# 디렉토리 내 파일들을 순회하며 변환
for root, dirs, files in os.walk(directory):
for filename in files:
if filename.endswith('.cs'):
filepath = os.path.join(root, filename)
# 파일의 현재 인코딩을 감지
with open(filepath, 'rb') as file:
rawdata = file.read()
result = chardet.detect(rawdata)
current_encoding = result['encoding']
with codecs.open(filepath, 'r', encoding=current_encoding) as file:
content = file.read()
with codecs.open(filepath, 'w', encoding=target_encoding) as file:
file.write(content)
print(f"{filepath}의 인코딩이 변경되었습니다.")
인코딩 테이블은 아래 참조.
https://docs.python.org/ko/3/library/codecs.html#standard-encodings
게임 개발에 필수적인 내용을 담는 명서들을 소개합니다.
<유니티 교과서 개정6판>(유니티 최신 버전) 구입 링크
https://link.coupang.com/a/be3P0t
<리얼-타임 렌더링(REAL-TIME RENDERING) 4/e> 구입 링크
https://link.coupang.com/a/8VWas
<이득우의 게임 수학:39가지 예제로 배운다! 메타버스를 구성하는 게임 수학의 모든 것> 구입 링크
https://link.coupang.com/a/9BqLd
유니티 에셋 스토어 링크
https://assetstore.unity.com?aid=1011lvz7h
(링크를 통해 도서/에셋 구입시 일정액의 수수료를 지급받습니다.)
728x90
반응형