태그 보관물: filenames

filenames

UTF 8 파일 이름? 수있는 메타 데이터

유닉스 기반 운영 체제에서 utf6 파일 이름은 허용됩니까? 그렇다면 파일을 디스크에 쓰려면 특별한 작업을 수행해야합니다.

내가하고 싶은 일을 설명하겠습니다. ftp를 통해 파일을 원격 시스템으로 전송하는 응용 프로그램을 작성하고 있지만 파일 이름은 utf8에있을 수있는 메타 데이터 집합을 통해 동적으로 설정됩니다. 유닉스 / 리눅스에서 디스크에 파일을 작성하기 위해해야 ​​할 일이 있는지 궁금합니다.

또한 후속 조치로 utf 8 파일 이름을 시스템에 업로드하면 utf8을 지원하지 않으면 어떻게 될지 알고 있습니까?



답변

Unix / Linux에서 파일 이름은 슬래시 또는 NUL을 제외한 모든 바이트 시퀀스입니다. 슬래시는 경로 구성 요소를 분리하고 NUL은 경로 이름을 종료합니다.

따라서 파일 이름에 원하는 인코딩을 사용할 수 있습니다. 일부 응용 프로그램은 파일 이름에 어떤 문자가 있는지 알지 못하는 경우 일부 인코딩에 문제가있을 수 있습니다. 예를 들어 잘못 작성된 셸 스크립트는 종종 공백이있는 파일 이름을 처리하지 않습니다.

최신 유닉스 / 리눅스 환경은 UTF-8로 인코딩 된 파일 이름을 잘 처리합니다.


답변

내부적으로 대부분의 파일 시스템은 바이트를 저장합니다. 파일 시스템 드라이버는 바이트의 의미를 신경 쓰지 않습니다. Linux 및 대부분의 다른 최신 유니스의 일반 파일 시스템 드라이버를 사용 /하면 널 바이트 이외의 다른 바이트가 파일 이름에 나타날 수 있습니다.

인코딩 제약이있을 수있는 파일 시스템이 있습니다 (일반적으로 FAT 또는 NTFS와 같은 비원시 파일 시스템). Samba와 같은 일부 네트워크 파일 시스템은 서버 인코딩과 클라이언트 인코딩간에 변환 할 수 있습니다. 서버 및 클라이언트 구성이 일관된 지 확인해야합니다.

일반적으로 대부분의 시스템에서 파일 이름을 구성하는 바이트는 UTF-8로 해석됩니다. 파일 이름을 문자로 해석하는 응용 프로그램 (예 : FTP를 통해 이름을 전송하는 응용 프로그램)을 실행하는 경우 파일 이름이 UTF-8로 인코딩되도록이 응용 프로그램을 구성해야 할 수 있습니다. 환경 LC_CTYPE을 UTF-8 로케일로 설정하는 en_US.UTF-8것은 많은 명령 행 응용 프로그램에 대한 트릭입니다.

UTF-8을 지원하지 않는 시스템에 파일을 저장하면 문제가되지 않습니다. 바이트는 동일하게 유지됩니다. 파일 이름을 구성하는 문자를 표시 할 수는 없지만 파일을 UTF-8을 지원하는 시스템으로 다시 복사하면 동일한 바이트가 여전히 UTF-8 문자로 표시됩니다.

자체 응용 프로그램을 작성하는 경우 내부적으로 UTF-8을 사용하고 가능하면 저장 및 전송에 사용하는 것이 좋습니다.


답변