[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#483781: Ответ: Bug#483781: FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!



Testcases for case-sensitivity:

dd if=/dev/null of=floppy.img seek=2880
mkfs.msdos floppy.img
mkdir /mnt/image
# These iocharset and codepage settings are valid for Russia
mount -o loop,iocharset=utf8,codepage=866 floppy.img /mnt/image
echo bad >/mnt/image/Æ
echo good >/mnt/image/æ
ls /mnt/image
umount /mnt/image

mkfs.msdos floppy.img
# These settings are correct for USA and are the defaults in Debian Lenny
mount -o loop,iocharset=utf8,codepage=850 floppy.img /mnt/image
echo bad >/mnt/image/Г
echo good >/mnt/image/г
ls /mnt/image
umount /mnt/image

The common pattern is that the offending characters are not
representable in the DOS codepage for a given country.

Mounting with this line instead of the above:

mount -o loop,utf8,codepage=850 floppy.img /mnt/image

doesn't trigger the warning, but still results in a case-sensitive
filesystem, so can't be considered as a fix. Since the kernel doesn't
want to keep the full (Unicode) mapping between upper and lower case,
the following solutions to the FAT case sensitivity problem remain:

 * switch to a non-UTF-8 locale (e.g., ru_RU.KOI8-R), mount FAT
filesystems with iocharset=koi8-r (or whatever is correct for your
locale - but the problem is to teach KDE to do this right for
removable media)
 * write a FUSE-based FAT filesystem driver, drop the kernel one.

Everything else results in either a case-sensitive filesystem, or in
incorrect display of filenames created under Windows (which is the
official reference implementation of the FAT file system).


-- 
Alexander E. Patrakov

Reply to: