구절구절한 설명 :
전공자나 관련 업계랑 관련 전혀 없는 컴알못인데 취미 겸 영어공부한다는 생각으로 요즘 하는 게임 모드 번역(영 → 한)을 하고 있음. 이거 번역하기 전까지만 해도 깃허브 쓰는 법도 몰랐는데 매번 파일 넘겨주는 것보다 깃허브에 바로 올리는 게 편할 거 같아서 대충 배워서 그래도 마스터에서 끌어와서 번역한 다음에 리퀘스트 보내는 것 정도만 할 수 있게 됐다.
그런데 번역한 파일이 txt 파일인데 UTF-8로 인코딩되면 어째서인지 게임 안에서 번역된 한글이 아닌 번역되기 전인 영문이 그대로 나와서 다른 한국어 번역자에게 물어봤더니 이 게임이 한글은 UTF-16으로 인코딩해야 나온다더라. 그래서 UTF-16 LE로 인코딩해서 테스트해보고 잘 나오는 것까지 본 뒤에 깃허브로 올렸고, 마스터에 합쳐져서 게임에서 잘 나오는 것까지 확인했다(사실 파일 이름을 잘못 만들어서 업데이트를 한 번 더 거친 뒤에야 정상적으로 나왔지만 지금 나오는 문제와는 관련이 없을 것 같음).
문제는, 한글 번역 메모장 파일을 UTF-16 LE로 인코딩한 뒤부터 깃허브 히스토리나 커밋 변경점 비교하는 곳에서 'binary file has changed'이라고 뜨면서 파일 변화가 나타나지 않았음. 처음 인코딩해서 그렇다고 생각했는데 나중에 새로 업데이트하면서 번역한 파일도 똑같이 나오면서 비교가 나타나지 않음.
부족한 지식으로 이것저것 검색해 본 결과 깃허브가 UTF-16이랑 맞지 않는다는 글이나 인코딩이 문제가 될 수 있다는 글은 몇 개 찾아봤지만 그 이상의 해결책은 얻을 수 없었음(해결책이 있는데 내가 부족해서 몰라본 것일 수도 있음). 어떻게 해결할 수 있을까?
정리 :
사용 운영체제 : 윈도우 10
문제가 있는 파일 확장자 : .txt
파일 편집 및 인코딩에 사용한 프로그램 : Visual Studio Code 이용. 인코딩은 VSC 하단 메뉴에서 UTF-8 눌러서 Save with Encoding 눌러서 UTF-16 LE 눌렀음.
Git 대신 GitHub Desktop 사용중
파일 변경 과정 :
진짜 컴알못이라 어떤 걸 쓰고 어떤 걸 덜어야 할지 몰라서 처음부터 지금까지 주절주절 다 썼음... 가독성은 미안함
모드 0.1.0 버전으로 출시 → 최초 한글 번역 파일 추가 후 풀 리퀘스트 → 모드 제작자가 내 풀 리퀘스트 마스터로 머지함 → 모드 제작자가 번역본 파일 내의 코드 오류를 고치면서 한글이 전부 깨짐 → 모드가 0.2.0으로 업데이트 → 내가 깨진 글자를 복구하면서 파일 이름을 수정하고 UTF-8에서 UTF-16 LE로 인코딩 후 커밋 → GitHub Desktop의 Changes에서 변경된 파일 내용이 나타나지 않고 binary file has changed 문구가 나타나는 것을 보고 쫄아서 다시 되돌림 → 인코딩은 모드 제작자에게 부탁하고 파일 이름만 수정해서 커밋하고 풀 리퀘스트(수정은 총 2회 다른 커밋으로 진행함) → 모드 제작자가 UTF-16 LE로 인코딩 해주겠다고 말하고 머지함 → 모드가 0.3.0으로 업데이트 → 모드 제작자가 인코딩 안 해놔서 내가 추가된 거 번역하면서 동시에 UTF-8에서 UTF-16 LE로 인코딩 후 커밋 및 풀 리퀘스트 → 여기서 앞에도 한 번 나타났던 binary file has changed 문구가 나오면서 원래 나오던 파일 내용 비교가 나타나지 않았지만 다음 업데이트에는 나올 거라고 생각하면서 파일 내용 한 번 더 수정하고 커밋 → 모드 제작자가 머지함 → 모드가 0.4.0으로 업데이트 → 업데이트된 내용을 번역하였으나, GitHub Desktop의 changes에 이전과 같이 binary file has changed만 나타남 → 시험 삼아 UTF-16 LE로 인코딩했던 파일을 다시 UTF-8로 인코딩해 봤으나(커밋은 안 함) 여전히 똑같은 상태였음. (아래깃허브 데스크톱의 스크린샷은 UTF-16 LE에서 UTF-8로 바꿨다가 다시 UTF-16 LE로 다시 인코딩한 상태)
원하는 것 :
위 사진과 같이 파일의 변경 내역이 나타나는 것
대신 나타난 것(문제점) :
깃허브에서는 binary file not shown이라고 나타나고, 데스크톱에서는 binary file has changed라면서 나타나지 않음.
엄청 치명적인 문제는 아니지만(게임에서는 번역 잘 나옴) 나나 혹시 다른 사람에게 번역을 넘겨줄 경우, 혹은 모드 제작자가 변화를 보고 싶어할 경우 문제가 있을 것 같아서 해결하려고 함... 도움 주면 정말 고마울 것 같음
git diff --text 하면 어케 나옴?
아 지금 작업하던 노트북은 못 쓰고 새벽에나 쓸 수 있을 거 같아서 확인은 새벽에 해 볼게 원래는 그거 하면 이전 파일이랑 차이점 나오는 거임?
해 봤는데 vsc 터미널에서 git bash로 했더니 한글은 깨져도 글씨 초록색 빨간색으로 뭔가 차이가 나오긴 함
사진, 동영상같은 이진 파일로 인식되는 것 같음 - dc App
Git 자체 문제라네 - dc App
https://stackoverflow.com/questions/777949/can-i-make-git-recognize-a-utf-16-file-as-text
- dc App
도움이 될 수 있는 링크 - dc App
아하.. 그럼 윗댓이랑 스택오버플로우 댓이랑 해서 한 번 해 볼게 진짜 고맙다
밑에 답변들 보니까 .gitattributes로 특정파일 인코딩이 뭔지 지정할수있네 깃헙 관리자한테 알리고 .gitattributes 추가 ㄱㄱ
아 그런 거임? 관리자면 나같은 경우엔 모드 제작자 말하는 거지? 해 준다고 할 때 얌전히 말 들을 거 그랬네.. ㄱㅅㄱㅅ
.gitattributes 파일 만들고 *.txt로 링크에 나온 방법 따라했는데 깃허브 데스크톱에서 무한로딩만 되고 나오지는 않음..