阅读:2082回复:5
有关FAT文件系统支持长文件名的问题
最近我自己做了个MP3播放器,一切都正常,同时支持FAT16、FAT32。可是就有一个问题没有解决,是有关长文件名的。
按手册上的理解,对应于实际我读取MMC卡的分析,长文件名根本对不上短文件名啊,不知道为何???而且实际上的长文件名也对应不了这串16进制长文件名数据啊!!!难道通过了什么算法转换吗???我真的不明白,我给出以下的文件目录数据,希望能得到大家的帮助。 42 70 00 33 00 00 00 FF FF FF FF 0F 00 DD FF FF FF FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF 01 0B 4E 00 4E D9 7A 29 59 0E 54 0F 00 DD 5F 00 54 00 77 00 69 00 6E 00 73 00 00 00 2E 00 6D 00 CF C2 D2 BB D5 BE 7E 31 4D 50 33 20 00 C3 D6 7E AD 32 AD 32 00 00 86 5B 4B 31 EA 68 4E 41 32 00 1、看短文件名“CF C2 D2 BB D5 BE 7E 31 4D 50 33 ”= “下一站~M3” 2、看长文件名“0B 4E 00 4E D9 7A 29 59 0E 54 5F 00 54 00 77 00 69 00 6E 00 73 00 2E 00 6D 00 70 00 33 00” = \" N羸)_Twins.mp3\" 其实该文件名的真正名是:“下一站天后_Twins.mp3” 可是为什么长文件名就是对不上呢???? winhex对中文长文件名也显示乱码呢,真不明白!!! 发个WINDOWS抓WINHEX的图! 希望高手指点迷津啊,谢谢!! qq: 16498592 zby8020@163.com |
|
沙发#
发布于:2005-05-21 18:17
最近我自己做了个MP3播放器,一切都正常,同时支持FAT16、FAT32。可是就有一个问题没有解决,是有关长文件名的。 长文件名 0B 4E 00 4E D9 7A 29 59 0E 54 5F 00 54 00 77 00 69 00 6E 00 73 00 2E 00 6D 00 70 00 33 00 是Unicode字符集,你找个工具把\"下一站天后_Twins.mp3\"转成Unicode就是上面的Hex code |
|
板凳#
发布于:2005-05-21 19:02
谢谢linguohui:
的确是UNICODE编码的问题!! 不知道linguohui有没有办法把UNICODE转GB、GBK、ANSI编码的方法呢?因为我想用区位码去查点阵汉字库!!! 再次感谢你!!! |
|
地板#
发布于:2005-05-23 18:36
|
|
|
地下室#
发布于:2005-05-24 08:49
因为FAT文件系统是用国际UNICODE编码(汉字是以遍旁部首编码的),而你的LCD字库使用GB编码的(以拼音编码的),也就是区位码。所以出现以上的问题。
你要想办法把UNICODE转GB后才可以查表。 我是把字库、UNICODE码表都放在U盘上,通过读U盘再转换的。 你可以在GOOGLE上找到UNICODE的马表。 |
|
5楼#
发布于:2005-05-24 11:04
请教各位一个问题:文件系统中文件名的存储
假设某一路径 C:\\DOC\\EXAM\\ 下有文件 file1.txt; file2.txt; file3.txt 文件系统为 FAT12/FAT16 那么,请问: 1.EXAM这个子目录的簇链中,“file1.txt; file2.txt; file3.txt ”的3个目录项(每个32Byte)有个专门的区域存放吗? 2.如果不是,那在这个簇链中是如何存放\"file1.txt; file2.txt; file3.txt \"3个文件的目录项和其对应的文件内容的? 在此先谢了! |
|
|