vfat으로 SD카드 mount 와 unicode long file name 질문입니다.
vfat으로 SD카드 mount를 하였습니다.
mount -t vfat /dev/mmcblk0 /mnt
그리고 opendir, readdir를 하여 d_name에 파일 이름을 얻어왔습니다.
현재 하고자 하려는 일은,
directory entry에 저장된 파일 이름을 가지고 있고, linux에서 vfat으로 mount하여 읽어온 파일 이름과 비교하려고 합니다.
제가 알고 있기로는 FAT directory Entry에서 Long File Name 은 Unicode로 저장되어 있다고 알고있습니다.
여기에서 질문이 있습니다.
1. vfat으로 마운트 시에 별도의 옵션을 주지 않으면 Long File Name이 unicode에서 UTF8로 변환되는 것인가요?
2. 저는 파일이름이 FAT에 있는 그대로(Unicode)를 읽어오고 싶은데 그것은 안되는지요?
3. Unicode에서 UTF8로 변환을 하려면 iconv 라이브러리를 사용해야만 하나요?
::vfat으로 읽어올때에 unicode에서 utf8로 변환을 한 것으로 보아 무언가 있을 것 같은데요...
4. Unicode에서 UTF8로 변환을 할 때 iconv를 사용해야 한다면 iconv_open시 인자를 어떻게 주어야 하나요?
:: Long File Name은 2byte unicode라고 알고 있었는데..
:: 찾아보니 유니코드도 UTF-8, UCS-2, UCS-2BE, UCS-2LE, UCS-4, UCS-4BE, UCS-4LE, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, UTF-32LE, UTF-7, C99, JAVA 이렇게 다양해서 FAT 디렉토리 엔트리에 저장되어 있는 것이 무엇인지 모르겠습니다.
두서없는 질문입니다.
도움을 주시면 감사하겠습니다.
2바이트
2바이트 유니코드라고 하면 UCS-2LE를 말하는 걸 겁니다. UTF-16LE라고 해도 뜻은 거의 같겠지요?
단, UTF-16LE는 Basic Multilingual Plane 바깥의 문자를 인코딩할 때 surrogate pair라는 방식을 사용합니다.
UCS-2LE는 BMP 바깥의 문자를 표현하지 못하죠. (사실 정식으로는 UCS는 인코딩이 아니라 문자집합입니다.)
--
임수서룬뫼 윤희수 {cppig1995/돼지군}
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
http://kldp.org/node/91971
http://kldp.org/node/91971
여기를 보세요.
댓글 달기