zhuangbiyu
驱动牛犊
驱动牛犊
  • 注册日期2004-09-25
  • 最后登录2008-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2082回复:5

有关FAT文件系统支持长文件名的问题

楼主#
更多 发布于:2005-05-19 09:58
   最近我自己做了个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
linguohui
驱动牛犊
驱动牛犊
  • 注册日期2002-05-17
  • 最后登录2012-09-19
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望8点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-21 18:17
  最近我自己做了个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
 


长文件名
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
zhuangbiyu
驱动牛犊
驱动牛犊
  • 注册日期2004-09-25
  • 最后登录2008-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-21 19:02
谢谢linguohui:

的确是UNICODE编码的问题!!

不知道linguohui有没有办法把UNICODE转GB、GBK、ANSI编码的方法呢?因为我想用区位码去查点阵汉字库!!!

再次感谢你!!!
guo_bin76
驱动牛犊
驱动牛犊
  • 注册日期2003-02-13
  • 最后登录2010-11-20
  • 粉丝0
  • 关注0
  • 积分129分
  • 威望74点
  • 贡献值1点
  • 好评度12点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-23 18:36
snow
zhuangbiyu
驱动牛犊
驱动牛犊
  • 注册日期2004-09-25
  • 最后登录2008-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-05-24 08:49
因为FAT文件系统是用国际UNICODE编码(汉字是以遍旁部首编码的),而你的LCD字库使用GB编码的(以拼音编码的),也就是区位码。所以出现以上的问题。

你要想办法把UNICODE转GB后才可以查表。

我是把字库、UNICODE码表都放在U盘上,通过读U盘再转换的。

你可以在GOOGLE上找到UNICODE的马表。
cmobile
驱动牛犊
驱动牛犊
  • 注册日期2004-08-02
  • 最后登录2007-08-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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个文件的目录项和其对应的文件内容的?
在此先谢了!
-
游客

返回顶部