제목에 모든 것이 나와 있습니다. 파일 경로의 바이트가 있고 이를 UTF-8로 디코딩하려고 하면 작업이 실패할 가능성이 있습니까? 즉, 유효한 Unix 파일 경로의 바이트가 유효하지 않은 UTF-8일 수 있습니다. 8)?
답변1
Artem S. Tashkinov의 답변 외에도 다음과 같은 내용이 있습니다.
파일 이름에 유효하지 않은 UTF-8 시퀀스가 나타나는 일반적인 이유는 해당 시퀀스가 다른 로케일에서 생성되었기 때문입니다. 예: 시스템이 여전히 ISO-8859 문자 세트 인코딩을 사용하여 실행되는 것은 드문 일이 아닙니다. 전 세계 PC와 MAC에서 사용되는 수많은 다양한 문자 집합은 말할 것도 없고...
다음 예에서는 이름이 같은 두 파일을 보여줍니다.초월(독일어놀라다) 같은 디렉토리에 있습니다. 한 파일이 사용되고 LANG=en_us.UTF-8
다른 파일이 사용됩니다 LANG=en_US.ISO-8859-15
.
UTF-8 인코딩을 사용하여 나열하는 경우:
$ ls -lt
total 0
-rw-r--r-- 1 ktf ktf 0 Sep 6 12:01 ''$'\334''berraschung'
-rw-r--r-- 1 ktf ktf 0 Sep 6 12:00 Überraschung
ISO-8859-15 인코딩을 사용하여 나열하는 경우:
$ ls -lt
total 0
-rw-r--r-- 1 ktf ktf 0 Sep 6 12:01 Überraschung
-rw-r--r-- 1 ktf ktf 0 Sep 6 12:00 'Ã'$'\234''berraschung'
힌트:문자 세트 사이를 올바르게 전환하려면 다음을 변경해야 합니다.둘 다다음 설정:
LANG
UNIX/Linux 쉘에서 환경 변수 설정. UNIX 시스템이 문자를 해석하고 처리하는 방법을 제어합니다.- 터미널 에뮬레이션을 위한 문자 인코딩(예:그놈 용어또는퍼티). 화면에 문자가 나타나는 방식을 제어합니다.
답변2
네, 완벽해요. 기본 Linux 파일 시스템의 파일 경로/ NULL
이름 에는 /
.
touch "$(dd if=/dev/urandom bs=128 count=1)"
당신을 거기에 데려다 줄 것입니다. 이 명령은 아무 것도 정리하지 않기 때문에 실패할 수 있습니다. 좋은 결과를 얻으려면 여러 번 실행해야 할 수도 있습니다.