1. 카카오톡 저장한 텍스트 파일은 OS공통 인코딩 형식과 다르다.
카카오톡 저장한 텍스트 파일을 메모장으로 열면 열리나, 엑셀이나 ahk로 열면 깨진다.


.카톡 raw -> 메모장 읽기 -> 인코딩 ok
.카톡 raw -> ahk, 엑셀 읽기 -> 인코딩 x



(1) 파일을 읽을 때 아무 것도 선언을 하지 않으면, 카카오톡 저장한 파일 형식이 깨진다!
무슨말이냐면
아무 변수도 선언 안한채로
FileRead, Var, C:\카카오톡저장.txt
MsgBox %Var%
너는 이미 깨져 있다.

(2) 마찬가지로 카카오톡 파일을 엑셀로 읽으면 파일 형식이 깨진다.
ahk랑 같은 형태로 깨진다. 오전 -> ?ㅼ쟾





2. 원본 카톡 텍스트 파일을 UTF-8로 저장하면 ahk(엑셀)에서 default 읽기 ok

.카톡 raw -> 메모장 읽기(인코딩ok) -> 메모장다른이름저장(인코딩 UTF-8) -> ahk 읽기 -> 인코딩 ok


3. OS에서 메모장에 텍스트 파일 저장하면(기본인코딩:ANSI) ahk(엑셀)에서 default 읽기 ok
.메모장 문서 작성 -> 문서1 저장(인코딩 ANSI)
.메모장 문서 작성 -> 문서2 저장(인코딩 UTF-8)

(1)ahk Default 인코딩(아무 선언도 하지 않음)
.문서1(ANSI) -> ahk 읽기 -> ok
.문서2(UTF8) -> ahk 읽기 -> ok

(2)ahk CP949 인코딩
.문서1(ANSI) -> ahk CP949 읽기 -> ok
.문서2(UTF8) -> ahk CP949 읽기 -> ok

(3)ahk UTF-8 인코딩
.문서1(ANSI) -> ahk UTF-8 읽기 -> FAIL
.문서2(UTF8) -> ahk UTF-8 읽기 -> ok

※ 부연설명 :  전체 전역에 "FileEncoding UTF-8"이라고 선언하면
이전에 Ansi(CP949추정)으로 읽어서 저장한 애들은 깨져서 나온다.
.문서1(ANSI) -> ahk UTF-8 읽기 -> FAIL


4. 카톡 raw는 추정컨대 UTF-8로 인코딩 되어 저장됨
하지만 UTF-8을 OS 내 프로그램들이 처음 읽을 때 기본적인 CP949로 읽어오려고 해서 깨지는 듯 하다.
메모장 UTF-8 명시 후 저장 - 프로그램들이 인식 / 카톡 UTF-8 형식 - 프로그램들이 미인식
(1)
.카톡Raw -> ahk 읽기(Default) -> FAIL
.카톡Raw -> ahk 읽기(CP949) -> FAIL (Default와 같음)
.카톡Raw -> ahk 읽기(UTF-8) -> ok

※ 부연 설명 : 파일인코딩 CP939나 Default나 카톡Raw 읽으면 깨지는 모양이 같다.
즉 ahk의 디폴트 인코딩은 CP939임이 확인되는 부분.

5. CP949를 939로 틀리면 아무것도 읽어오지 못한다. 


6. 핫키 간 인코딩 선언은 영향을 받지 않는다.

;성공 예시, FileRead전에 반드시 UTF-8 인코딩 해줘야함.
F2::
FileEncoding, UTF-8
FileRead, Var, C:\카카오톡저장.txt
Msgbox %Var%
return

;실패 예시, F2를 누르고 F3을 눌러도 깨지게 나옴
F2:: 
FileEncoding, UTF-8
return

F3::
FileRead, Var, C:\카카오톡저장.txt
Msgbox %Var%
return


7. 결론 : 불필요하게 전역에 UTF-8 선언할 필요도 없고
왜? 3.(3) 참조

카톡Raw파일 FileRead전에만 반드시 UTF-8 인코딩 해주면 됨.

'Programming > AutoHotKey' 카테고리의 다른 글

Send의 여러 Mode 에 대해  (0) 2019.05.10
AutoHotKey튜토리얼 알게된점 정리(계속수정)  (0) 2019.05.09
AutoHotKey Intro  (0) 2019.05.09