프로그래밍 이야기

파이썬(Python) - 폴더 아래 소스코드 인코딩 일괄 변환 스크립트

원소랑 2023. 11. 21. 01:56
728x90

유니티 엔진으로 개발하던 프로젝트의 소스코드가 어째서인지 어느 순간 인코딩이 바뀌어 버렸습니다. 원인은 알 수가 없는 상황. 코드는 모두 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

 

codecs — Codec registry and base classes

Source code: Lib/codecs.py This module defines base classes for standard Python codecs (encoders and decoders) and provides access to the internal Python codec registry, which manages the codec and...

docs.python.org


게임 개발에 필수적인 내용을 담는 명서들을 소개합니다.

 

<유니티 교과서 개정6판>(유니티 최신 버전) 구입 링크
https://link.coupang.com/a/be3P0t

 

유니티 교과서 개정6판

COUPANG

www.coupang.com


<리얼-타임 렌더링(REAL-TIME RENDERING) 4/e> 구입 링크
https://link.coupang.com/a/8VWas

 

리얼-타임 렌더링 4/e

COUPANG

www.coupang.com

 

<이득우의 게임 수학:39가지 예제로 배운다! 메타버스를 구성하는 게임 수학의 모든 것> 구입 링크
https://link.coupang.com/a/9BqLd

 

이득우의 게임 수학:39가지 예제로 배운다! 메타버스를 구성하는 게임 수학의 모든 것

COUPANG

www.coupang.com

 

유니티 에셋 스토어 링크
https://assetstore.unity.com?aid=1011lvz7h

 

에셋스토어

여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.

assetstore.unity.com

(링크를 통해 도서/에셋 구입시 일정액의 수수료를 지급받습니다.)


 

728x90
반응형