本來這個blog是記錄開發輸入法的點滴的,後來越來越雜,現在什麼都記錄了。

2008年9月20日 星期六

dump fat (fat32 only) file system information and modify short filenames

As described in my previous blog (in Chinese), I have written a program in C (in Linux) to modify all short directory names and filenames that is encoded in Big 5 Traditional Chinese to GB Code (Simplified Chinese). This program works for FAT32 file system only and is a good example code to show:

  • how to dump FAT (in fact FAT32 only)  file system
  • how to recursively list all the directory and filenames (both short and long filenames) in a FAT filesystem
  • how to modify the short file names

The source code is based only on:

Example usage:

  •  ./modify_fat /dev/sdb1      dump information of FAT32 file system and recursively lists all files and directory
  • ./modify_fat /dev/sdb1 -m  dump information of FAT32 file system and convert the short filenames from Big 5 to GB format. 

Please find the source code here.

DVD 機 USB 手指

近來買了一個大陸可插 USB 手指的  DVD 機,給我老媽聽佛經。買回來後,將她的佛經錄音放到 USB 手指裡面,怎料一插進去後,出現了這堆亂碼。

以下就是問題發生的原因:

  • USB 手指的檔案系統叫 FAT32. 每個檔案都有一個短的檔案名和長的檔案名。
  • 短的檔案名用 Big5 編碼 (我的 Windows 是繁體中文的)。長的檔案名,用 Unicode 編碼。
  • 這大陸 DVD 機,短檔案名稱只能顯示簡體中文。長檔案名因為是 Unicode,所以能顯示多國文字。

這就麻煩了。因為在香港長大,盡量希望長檔案名用繁體中文,但又不想老媽看到亂碼。這問題是我魂牽夢縈了一個星期,不斷研究怎解決這問題,一邊在動手看 FAT32  file system。終於忍不住手,寫程式,將 FAT File system 8.3 短檔案名裡面的繁體中文轉為簡體。用了我 2 整天的時間,終於搞掂! 請大家看看下面畫面: