LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1288|回复: 7

请教:ntfs分区下的有些中文长文件名不能正确处理,有些又正常

[复制链接]
发表于 2005-5-15 17:27:02 | 显示全部楼层 |阅读模式
系统是Gentoo 2004.3
fstab里的加载选项:/dev/hda2  /mnt/hda2  ntfs  noatime,ro,noauto,nls=cp936  0 0

用ls列出文件时显示如下,也不能打开有问题的文件,konqueror里也显示不出有问题的文件名,在winxp下都是正常的,请各位指点下问题出在哪里?

ls: 开关集成稳压器控制器的原理和应用.pdf: 没有那个文件或目录
ls: UPS不间断电源剖析与应用.pdf: 没有那个文件或目录
ls: 原理图1.pdf: 没有那个文件或目录
ls: 原理图2.pdf: 没有那个文件或目录
ls: 原理图3.pdf: 没有那个文件或目录
ls: 原理图4.doc: 没有那个文件或目录
ls: 常用CMOS CC4000系列集成电路速查手册.pdf: 没有那个文件或目录
ls: 开关稳压电源——原理、设计与实用电路.pdf: 没有那个文件或目录
ls: 晶闸管电路大全scr、mosfet、gtr、igbt应用指南.pdf: 没有那个文件或目录
ls: 电源网格的电压下降和电迁移效应分析.pdf: 没有那个文件或目录
ls: 直流开关电源的软开关技术.pdf: 没有那个文件或目录
SPWM变频调速应用技术.pdf
常用电子设备开关电源检修方法.pdf
开关电源的设计与应用.pdf
开关电源设计过程中主要元件选择指南.pdf
新型单片开关电源的设计与应用.pdf
新型特种集成电源及应用.pdf
新颖开关稳压电源.pdf
发表于 2005-5-15 17:44:00 | 显示全部楼层
Post by peterliu
系统是Gentoo 2004.3
fstab里的加载选项:/dev/hda2  /mnt/hda2  ntfs  noatime,ro,noauto,nls=cp936  0 0

用ls列出文件时显示如下,也不能打开有问题的文件,konqueror里也显示不出有问题的文件名,在winxp下都是正常的,请各位指点下问题出在哪里?

ls: 开关集成稳压器控制器的原理和应用.pdf: 没有那个文件或目录
ls: UPS不间断电源剖析与应用.pdf: 没有那个文件或目录
ls: 原理图1.pdf: 没有那个文件或目录
ls: 原理图2.pdf: 没有那个文件或目录
ls: 原理图3.pdf: 没有那个文件或目录
ls: 原理图4.doc: 没有那个文件或目录
ls: 常用CMOS CC4000系列集成电路速查手册.pdf: 没有那个文件或目录
ls: 开关稳压电源——原理、设计与实用电路.pdf: 没有那个文件或目录
ls: 晶闸管电路大全scr、mosfet、gtr、igbt应用指南.pdf: 没有那个文件或目录
ls: 电源网格的电压下降和电迁移效应分析.pdf: 没有那个文件或目录
ls: 直流开关电源的软开关技术.pdf: 没有那个文件或目录
SPWM变频调速应用技术.pdf
常用电子设备开关电源检修方法.pdf
开关电源的设计与应用.pdf
开关电源设计过程中主要元件选择指南.pdf
新型单片开关电源的设计与应用.pdf
新型特种集成电源及应用.pdf
新颖开关稳压电源.pdf



你的locale是什麽?我的經驗所得是,掛載的locale和LC_CTYPE一致時是最好的,其中又以UTF-8最爲出色,我掛Fat32、NTFS所有的文件都沒有?y碼了:)我fstab的nls是utf8,LC_CTYPE是UTF-8
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-16 21:26:02 | 显示全部楼层
locale设置的是zh_CN.GBK,看Gentoo本地化指南上说只要在/etc/profile设置LANG=zh_????,LC_CTYPE这个变量如何设置还请指点,我尝试了export LC_CTYPE=???后没有什么作用,看了很多帖子还是一头雾水

我还尝试了更改LANG=UTF8和fstab的nls=utf8,konqueror可以显示出所有文件名了,但是Acrobat打开所有文件都是无法打开文件的错误提示,包括以前正常的
回复 支持 反对

使用道具 举报

发表于 2005-5-16 23:21:27 | 显示全部楼层
Post by peterliu
locale设置的是zh_CN.GBK,看Gentoo本地化指南上说只要在/etc/profile设置LANG=zh_????,LC_CTYPE这个变量如何设置还请指点,我尝试了export LC_CTYPE=???后没有什么作用,看了很多帖子还是一头雾水

我还尝试了更改LANG=UTF8和fstab的nls=utf8,konqueror可以显示出所有文件名了,但是Acrobat打开所有文件都是无法打开文件的错误提示,包括以前正常的




據我所知CP936對應的encoding是gb2312,LC_CTYPE設置爲GBK會有很多文件出現?y碼的,所以LC_CTYPE要麽就設成zh_CN(不加encoding,默認使用gb2312),要麽就用zh_CN.UTF-8(這個在我的系統上可以完美的顯示所有NTFS、VFAT的文件),當然了,得和fstab裏的nls對應。設置LC_CTYPE不要去改/etc/profile,我個人意見是,盡可能的利用用戶目錄進行設置而不是對改系統設置文件。普通用戶可以這樣:

  1. echo "export LANG=en_US.UTF-8" >> ~/.bashrc (需要中文界面的就用zh_CN.UTF-8/GBK等中文編碼)
  2. echo "export LC_CTYPE=zh_CN.UTF-8" >> ~/.bashrc
复制代码

如果用root,把.bashrc換成.profile(當然通常不這麽幹)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-17 22:33:54 | 显示全部楼层
多谢了,还是没搞定,按您所说的设置后解决了开始所说的问题,但又有新的问题,就是放在ext3分区上的一些文件可能是创建时用的GBK,现在都无法显示中文的文件名了,而且在NTFS分区中有些文件名也出现乱码,比用GBK时更多,不知道有没有更好的解决方法,文件太多了,都转换编码的工程想想都晕
回复 支持 反对

使用道具 举报

发表于 2005-5-17 22:45:31 | 显示全部楼层
Post by peterliu
多谢了,还是没搞定,按您所说的设置后解决了开始所说的问题,但又有新的问题,就是放在ext3分区上的一些文件可能是创建时用的GBK,现在都无法显示中文的文件名了,而且在NTFS分区中有些文件名也出现乱码,比用GBK时更多,不知道有没有更好的解决方法,文件太多了,都转换编码的工程想想都晕




那就奇怪了,你確認locale的LC_CTYPE和fstab的nls是一致的嗎?(推薦使用UTF-8)應該是不需要轉碼就OK的了,對了,kernel裏用把utf8、cp936編進去嗎?我的設置是:kernel使用iso8859-1做爲default(編入cp936、還有big5以及utf8),fstab使用nls=utf8、locale的LANG=en_US.UTF-8,LC_CTYPE=UTF-8,沒有任何的?y碼問題~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-18 22:12:00 | 显示全部楼层
Jwing兄,多谢你不厌其烦的指点,我也觉得非常奇怪,以前用redhat和fedora时没出现过这种问题,我确实是这样设置的,fstab使用nls=utf8、profile使用LANG=en_US.UTF-8,LC_CTYPE=UTF-8,内核也一直是配的,CONFIG_NLS_DEFAULT="iso8859-1"\CONFIG_NLS_CODEPAGE_437=y\CONFIG_NLS_CODEPAGE_936=y\
CONFIG_NLS_CODEPAGE_950=m\CONFIG_NLS_ISO8859_1=y\CONFIG_NLS_UTF8=m,
你可以看下我的屏幕截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2005-5-19 10:13:32 | 显示全部楼层
Post by peterliu
Jwing兄,多谢你不厌其烦的指点,我也觉得非常奇怪,以前用redhat和fedora时没出现过这种问题,我确实是这样设置的,fstab使用nls=utf8、profile使用LANG=en_US.UTF-8,LC_CTYPE=UTF-8,内核也一直是配的,CONFIG_NLS_DEFAULT="iso8859-1"\CONFIG_NLS_CODEPAGE_437=y\CONFIG_NLS_CODEPAGE_936=y\
CONFIG_NLS_CODEPAGE_950=m\CONFIG_NLS_ISO8859_1=y\CONFIG_NLS_UTF8=m,
你可以看下我的屏幕截图




我看到你的utf8是編成模塊的,而我全是編入內核的,有iso8859、936、950和utf8四項,default是iso8859,你不妨把utf8編入內核試試,重新說明一下我的設置:
內核:
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_936=y
CONFIG_NLS_CODEPAGE_950=y
CONFIG_NLS_UTF8=y

fstab:
vfat和ntfs均使用nls=utf8

locale:
LANG=en_US.UTF-8
LC_CTYPE=zh_CN.UTF-8

Good luck ;)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表