(TO ME) 한글에서 기계어로의 저장 체계
(EX)
텍스트 파일이름이 '나는 UTF-8'
텍스트 파일내용은 '나는 Windows가 기본 UTF-8, 그리고 사용자가 설정가능, cp949는 커널레벨'인 텍스트 파일을 0101010...의 기계어로 전환해주는 함수
이러한 파일 저장 시스템에 의해 저장된 파일들은 리눅스 서버로 전송해도 제목, 날짜와 같은 핵심적인 데이터들은 메타데이터로서 유니코드(가령, utf-8, utf-16)으로 저장되기 때문에 파일 이름의 한글이 깨지지 않는다.
윈도우 XP만 해도 NTFS 3.1 이상이 탑재되므로, 현 실습 시스템 환경인 윈도우10 노트북은 NTFS 3.1 이상이 보장된다.
그리고, 22년 윈도우10의 경우 파일 내용과 같은 기본 데이터들의 인코딩도 기본값은 utf-8이다. 이는 메모장과 노트패드로 확인가능하다.
!! 유의 !!
또한, file 명령어의 한계로, Windows 에서 UTF-8로 인코딩된 파일이더라도, 파일 내용에 한글이 탐색되지 않으면 en-ascii로 charset이 조회된다. 이때 인코딩 변경없이 파일에 한글 내용을 추가하면 utf-8로 정상 조회된다.
공식 문서들에 따르면, 파일 이름의 한글이 깨지는 에러는 MFT가 보급된 이래로 발생하지 않아야 한다. 왜냐하면 유니코드, 가령 UTF-8,로 저장된다고 하기 때문이다.
하지만, 대체로 5~10년 전 글에서 윈도우의 파일명, 파일내용이 리눅스로 보내지면 둘다 깨졌다고한다.
여기서부터는 EUC-KR로의 회귀나, putty나 powershell 같은 접근 툴 상의 인코딩 설정 오류, unzip과 같은 명령어별 버전의 문제 등이 연관된것으로 판단한다.
메모장이나 노트패드 방식
메모장이나 노트패드 편집기로 파일 열고, 다른 이름으로 저장할 때, 인코딩 조회 및 변경이 가능하다. 윈도우 운영체제에서의 인코딩 확인법은 cli가 아니라 GUI로 이해가능-출처
git 존재 시 git bash 활용
해당 폴더에서 git bash를 열어서 linux와 같이 'file -i *' 하면 해당 폴더의 인코딩 정보를 조회가능하다, 하지만 영문 파일의 경우 utf-8 인코딩이 en-ascii로 조회되는 버그가 있다. -출처
프로그래밍 언어의 I/O함수를 통한 인코딩 확인 방법, 다만 해당 글은 함수 인코딩이 파일과 맞지 않아 실패 - 출처
포렌식 툴을 활용한 디스크 속 기계어 해석, 거의 현미경으로 조회하는 법이다. 포렌식의 영역이다.
포렌식 툴 소개, 디스크 조회와 NTFS의 MTF 구조 , 디지털 포렌식의 NTFS 조회 사례
이러한 리눅스의 파일 저장 시스템으로 파일을 보낼 때, OS Kernel 수준에서 기계어를 UTF-8로 저장하기 때문에,
Filezillar, putty 같은 접근 툴의 인코딩을 UTF-8로 설정해야, 서버의 파일 이름들이 왜곡없이 조회가능하다.
의외로 파일시스템(혹은 이를 품는 운영체제)과 인코딩은 별개의 영역이나 의존 관계가 아니라고 말하는 글도 있다.
On Unix-like systems, the encoding of file names is not set at the filesystem level, but rather in the user environment. - 출처
The Windows file system (NTFS) doesn't store any metadata for a file beyond the trivial stuff like name, extension, last written date, etcetera. Nothing that's specific for the file type. - 출처
The unix/posix layer of linux doesn't care which encoding you use. - 출처
그러나,
운영체제별로 기본적인 인코딩은 존재하고 명령어를 통해 조회가능하고 변경가능하다. 특히 리눅스는 locale에 명확히 제시된다.
정리하자면,
이들은 파일시스템을 사용자가 변경할 수 없는 영역으로 엄밀하게 정의하여 위와 같은 말을 하는 것으로 추측하고,
사용자가 쉘이나 ftp 툴과 같은 응용어플리케이션 단에서 사용자가 인코딩을 자유롭게 설정하기에 인코딩 기능을 애당초 파일 저장 시스템의 고정적인 부분보다 관련 변수로 이해하기에 이러한 표현을 쓰는 것으로 추측한다.
win , linux cmd 차이
https://bbaek-gwi-story.tistory.com/17
윈도우에서의 인코딩 조회 방법 ; 메모장과 노트패드, git bash + a
https://stackoverflow.com/questions/3710374/get-encoding-of-a-file-in-windows
윈도우의 파일 저장 시스템 ; NTFS
https://ko.wikipedia.org/wiki/NTFS
MS NTFS overview ; english, 한국어
https://docs.microsoft.com/en-us/windows-server/storage/file-server/ntfs-overview
https://docs.microsoft.com/ko-kr/search/?terms=ntfs%20file%20name
MS FAT~NFTS 파일 저장 시스템 개요, 현존은 NFTS
https://docs.microsoft.com/ko-kr/troubleshoot/windows-client/backup-and-storage/fat-hpfs-and-ntfs-file-systems