如何找出当前文件系统使用的字符集编码以及如何将其更改为 UTF-8?
编辑:
以下是 mount 的输出:
/dev/sdb6 on / type ext3 (rw,relatime,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
/proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,nosuid,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
lrm on /lib/modules/2.6.27-11-generic/volatile type tmpfs (rw,mode=755)
securityfs on /sys/kernel/security type securityfs (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /root/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev)
以下是“cat /etc/fstab”的输出
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sdb7
UUID=50d660f1-1948-41e1-96af-3cb9bca338dd / ext3 relatime,errors=remount-ro 0 0
# /dev/sdb8
UUID=efaee412-8e29-4f65-927d-f57252451088 none swap sw 0 0
答案1
在类 Unix 系统中,文件名的编码不是在文件系统级别设置的,而是在用户环境中设置的。检查 的输出locale
并查看点后面的内容 — 例如,在我的情况下LANG=en_US.UTF-8
,因此我的环境中的文件名被解释为 UTF-8。这是 Ubuntu 中的默认设置。
这丹尼斯·威廉姆森的回答与需要翻译的特殊文件系统类型相关,并且我并不试图深入探讨这个问题,因为您的输出mount
和cat /etc/fstab
显示这不是您的情况。
答案2
您没有说明是什么文件系统,但是您可以查看mount
我的某个系统上的输出,其中当前显示一个 iso9660 文件系统和几个 vfat 文件系统(utf8)。您还可以查看内容,看看/etc/fstab
您设置它们的位置或它们已经设置。查看man mount
显示 NTFS 和 jfs 是另外两个具有该选项的文件系统。
答案3
Ubuntu 默认使用 UTF-8 编码,似乎你没有更改它。你可以使用不同的编码来命名文件名。在这种情况下,你可以使用康维来修复这个问题。
答案4
简而言之,你真的不能。
有两件事,文件名的编码和文件中数据的编码。在这两种情况下,文件系统都会只是存储原始字节。用户需要确保它们是用户想要的编码。