请教:如何在纯DOS下显示长格式的UNICODE字符文件名???

troyleescong 2006-07-25 04:12:02
我想编程实现DOS的“dir”命令功能,但在纯DOS下vc的_findfirst和_findnext函数都不能使用(我研究过是因为需要有一个叫IFSMGR.VXD - 文件系统安装管理程序的驱动程序的支持),若用标准的findfirst和findnext函数则只能显示短文件名,而且中文会乱码。
所以,我的思路是直接读磁盘扇区,读出文件分配表和目录文件的目录项,把其中的UNICODE字符转换为中文或者其他,然后列表显示。
但是,我的问题是对文件分配表和目录文件的结构以及物理位置不太熟悉,虽然我尝试过搜索,但效果并不理想,并且我对UNICODE字符格式也不太了解,所以在此恳请各位高手不吝赐教,如果可以的话希望提供代码。
或者还有什么其他更好的方法可以在纯DOS下显示长格式的UNICODE字符文件名,也希望提出来。
谢谢!!
...全文
492 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
troyleescong 2006-07-31
  • 打赏
  • 举报
回复
去微软下载的FAT32的格式文档,全是英文的,快晕死了~~~~
期待中文版啊!!
troyleescong 2006-07-30
  • 打赏
  • 举报
回复
首先,先感谢Jim_King_2000()的提供,请问谁还有更多有关FAT32的格式的资料吗??
troyleescong 2006-07-25
  • 打赏
  • 举报
回复
To:al0n9(al0n9)
FAT32文件系统是支持Unicode格式的,“每个长文件名目录项最多可以存放13个UNICODE字符。如果长文件名比13字符还要长,就会有新的目录项加入到目录中来用于存放长文件名的其余部分。” 请看这个:http://www.pchdd.net/Get/jishujieda/224845736.htm
其次,我已经编写了扩展Int13H的中断服务程序直接读写磁盘扇区了,而且成功完成了磁盘分区表链的查找。
第三点,对于显示汉字的问题,我了解到好像可以加入ucdos汉字系统,不知道是否正确??
al0n9 2006-07-25
  • 打赏
  • 举报
回复
不知道楼主所谓的纯DOS是什么含义?DOS6.22?
似乎FAT32和FAT16都是不支持Unicode的,那么就是NTFS的文件系统格式了,NTFS的格式到现在还没公开呢,这是难点1。
linux系统下面,有读取NTFS文件系统格式的源代码,可以参照一下。DOS6.22只能访问2G的硬盘,不支持大硬盘访问,而NTFS一般都是在大硬盘中的,所以,还得自己写扩展Int13H的中断服务程序来支持大硬盘访问,这是难点2。
Unicode3.1总共有9万多个字符,如果用点阵字库,按最小的16点阵字库来算,每个字符的点阵信息占用32个字节的空间,9万多个字符,就需要2M以上的存储空间。纯DOS最大只能访问1M的内存空间,除去ROM占用,高端内存部分,操作系统占用的部分,实际上应用程序最多也就能访问630K左右的空间,所以汉字的点阵信息加载到内存是不可能了,但是如果点阵信息放在硬盘上,那么显示速度恐怕就慢如蜗牛了。
jixingzhong 2006-07-25
  • 打赏
  • 举报
回复
真正的 DOS 下是不支持汉字显示的 ...

那个年代,
支持的只是 ASCII ...
而且在 DOS 系统下,
文件名字也是收到限制,
主文件名最多 8 字符, 多余会被截去,
根本就没有获得全部文件名字的机会 ...
Jim_King_2000 2006-07-25
  • 打赏
  • 举报
回复
肯定要自己访问文件分配表啊。如果是FAT32格式的,就需要阅读FAT32的spec;是NTFS格式的,就需要读NTFS的spec。太麻烦了。不知道楼主为何做这个?
Kvci 2006-07-25
  • 打赏
  • 举报
回复
1、要获得完整文件名
2、要显示汉字

第一步暂时没研究怎么做
实现第一步后,要把汉字的2个字节查汉字表文件,再用图形方式把字画逐个出来(这个TC下常用的方法,要有个点阵汉字库文件,可以根据字符值算出汉字点阵的存储位置)
mopyman 2006-07-25
  • 打赏
  • 举报
回复
基本无望,修改内核可是比较难的!
pacman2000 2006-07-25
  • 打赏
  • 举报
回复
没希望。。。DOS只支持8.3文件名。
Jim_King_2000 2006-07-25
  • 打赏
  • 举报
回复
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
FAT32的格式文档。
troyleescong 2006-07-25
  • 打赏
  • 举报
回复
To:Jim_King_2000()
请问“阅读FAT32的spec”是什么意思呢??

To:mopyman(only you c plus plus)
我不是要修改内核,是在加载WINDOWS之前的命令行模式下使用的(即我所谓的纯DOS模式)。

To:dear all
现在很多那些ghost版的WINDOWS安装盘好像都可以显示中文的,请问大家知道他是怎么做的吗?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧