2016-12-17 3 views
0

특정 디렉토리의 파일과 하위 디렉토리를 재귀 적으로 나열하고 있지만 (dirent.h를 사용하여) 지금까지 작동하지만 en 대시 또는 일본어와 같은 특수 문자가있는 파일 한자.C++ 특수 비표준 문자가있는 파일 나열

전체 코드는 여기 https://gist.github.com/VikiMaster2/f14a19aa5cf042f0787467a37a616ded

는 난 단지 수 '?'들 이름에 이상한 문자가 포함 된 파일을. 콘솔에서 이러한 문자를 제대로 표시 할 수없고 dirent가 ASCII가 아닌 문자를 지원하지 않는다는 것을 이해하지만 파일에 대한 모든 경로를 저장하고 사용하려면 어떻게해야합니까? 다음

Demo picture

+0

주 기능을 포함한 전체 코드를 입력하십시오. 적은 타이핑으로 도움을줍니다. – user902384

+0

주목 받고 업데이트 됨. –

답변

0

은 (간단한 명령 ./a.out>abcd.txt 생성)의 샘플 출력 샘플 16 진 덤프이다

00000000 20 20 2d 20 61 2e 6f 75 74 0a 20 20 2d 20 61 62 | - a.out. - ab| 
00000010 63 64 2e 74 78 74 0a 20 20 2d 20 76 69 65 77 73 |cd.txt. - views| 
00000020 6f 75 72 63 65 2e 63 73 73 0a 20 20 2d 20 e0 a4 |ource.css. - ..| 
00000030 b2 e0 a5 87 0a 20 20 2d 20 74 65 73 74 2e 63 0a |..... - test.c.| 

및 파일이다

- a.out 
- abcd.txt 
- viewsource.css 
- ले 
- test.c 

이제 ASCII가 아닌 문자가 멀티 바이트 문자이며 저장되어있는 인코딩을 파악할 수 있습니다. 저장되는 인코딩을 이해하면 읽는 것이 쉽습니다.

$ file abcd.txt 
abcd.txt: UTF-8 Unicode text 

그러나,이 리디렉션에 저장하는 방법입니다

인코딩을 알 수있는 가장 간단한 방법은 같은 file 명령을 실행합니다. UTF-8이 매우 특별한/좋은 선택 인 원하는 인코딩으로 저장할 수 있습니다. 이제는 UTF-8 인코딩 만하면됩니다. 이것으로 당신을 도울 라이브러리가 있지만 당신은 항상 그것을 스스로 시도 할 수 있습니다.

편집 1 : 사용자가 Windows를 사용하고 있고 file 명령에 Linux를 사용하는 것을 보지 못해 죄송합니다. Windows에 파일 명령이 있는지 나는 모른다. 하지만 코드에서 UTF-8 문자의 존재 여부를 직접 감지 할 수 있습니다. 코드를 작성하는 것은 매우 간단하며 사용자가 수행 할 수 있다고 생각합니다.