있는 표준 방법을 fopen 으로 유니코드 문자열 파일 경로?
문제
있는 표준 방법을 fopen 으로 유니코드 문자열 파일 경로?
다른 팁
없는 표준 방법입니다.사이 약간의 차이가 있 운영 체제입니다.여기에는 방법이 다른 Os 처리 비-ASCII 파일 이름.
Linux
리눅스에서 파일 이름은 단순히 이진 문자열입니다.컨벤션에서 가장 현대적인 분포를 UTF-8 을 사용한 비-ASCII 파일 이름.하지만 처음에는,그것은 일반적이었다 인코딩하는 파일 이름으로 ISO-8559-1.그것은 기본적으로 각각의 응용 프로그램을 선택한 인코딩할 수 있도록 다른 인코딩에서 사용되는 동일한 액세스를 참조하십시오.*이 LANG
환경변수는 당신에게 힌트 무엇을 원하는 인코딩이다.그러나 이러한 일이 있다고 생각한 UTF-8 다.
이 문제 없이기 때문에,하지만 파일을 포함하는 잘못된 UTF-8 시퀀스를 완벽하게 유효한가에 대부분의 리눅스 파일 시스템.당신은 어떻게 지정한 파일 경우에만 지원 UTF-8?이상적으로,당신은 모두를 지원 UTF-8 바이너리 파일 이름.
OS X
HFS 파일시스템 OS X 에서 사용 Unicode(UTF-16)파일 이름을 내부적으로 합니다.대부분의 C(및 POSIX)라이브러리 함수 fopen
UTF-8 개 문자열은(이후 그들은 8-비트 compatible)및 변환 그들이 내부적으로 합니다.
Windows
Windows API 를 사용하 UTF-16,파일 이름만 fopen
만 지원하는 ASCII.많은 C 라이브러리 함수가 아닌 표준에 해당하는지 UTF-16(wchar_t
on Windows).예를 들어, _wfopen
대 fopen
.
이것은 현재 로케일의 문제입니다. 내 시스템에서 유니 코드가 활성화 된 파일 경로는 유니 코드에 있습니다. 로케일 명령을 통해 이것을 감지 할 수 있습니다.
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
파일 경로의 인코딩은 일반적으로 시스템을 넓게 설정하므로 파일 경로가 시스템의 로케일에 있지 않으면 아마도 아이콘 도서관.