출처
iOS에서 파일을 검색할때 보통 아래와 같은 형식으로 합니다.
[출처] iOS에서 한글 파일명 인식 문제...|작성자 중고엑박
NSFileManager *manager = [NSFileManager defaultManager];NSArray *fileList = [manager contentsOfDirectoryAtPath:path error:NULL];
예를 들어 0번째 파일명이 "한글.txt"라고 가정했을때...
그 파일이 "한글.txt"가 맞는지 확인하다면, 일단적으로 다음과 같이 할 것입니다.
if ([[fileList objectAtIndex:0] isEqualToString:@"한글.txt"] == YES)
이렇게 하면 같을 것이라고 예상하지만, 값이 다르다고 나옵니다.
답답한것은 NSLog로 찍어보면 둘다 동일하다는 것이죠.
원인은 iOS에서 파일/디렉토리명은 Canonical Mapping이 적용된다는 것입니다.
Canonical Mapping이 적용되면,
한글.txt -> ㅎㅏㄴㄱㅡㄹ.txt
로 자소가 각각 분리되어 저장이 됩니다.
그런데 NSLog는 똑똑하게(?) Canonical Mapping이 적용된 문자열도 제대로 보여줍니다.
Hex로 찍어봐야 비로서 다르다는 것을 눈치채긴 하는데, 왜 다른지 알아내기는 어렵습니다.
엉뚱하게 인코딩이 다른가 헛다리 짚기 일쑤죠.
Canonical Mapping 적용/해제 하는 함수가 있네요.
[nsstring decomposedStringWithCanonicalMapping] -> 매핑 적용
[nsstring precomposedStringWithCanonicalMapping] -> 매핑 해제
이것으로 삽질하는 사람이 없기를..
[출처] iOS에서 한글 파일명 인식 문제...|작성자 중고엑박
'Programming > iOS' 카테고리의 다른 글
스마트기기의 스크린사이즈를 한눈에 쉽게 확인 (0) | 2014.01.09 |
---|---|
UITableView Refresh시 탁구 게임 로딩 표시하기 (0) | 2014.01.07 |
Notification에 대해 좋은 글 (0) | 2013.11.27 |
Sizes of iPhone UI Elements (0) | 2013.04.10 |
iOS 버전별로 폰트를 확인할 수 있는 사이트 (0) | 2013.04.04 |