Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1555872
  • 博文数量: 290
  • 博客积分: 3468
  • 博客等级: 中校
  • 技术积分: 3461
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-28 22:21
文章分类

全部博文(290)

文章存档

2016年(13)

2015年(3)

2014年(42)

2013年(67)

2012年(90)

2011年(75)

分类: LINUX

2011-09-29 20:52:51

以下的U盘 文件格式为 fat
1.Busybox 挂载U盘 U盘里的文件名显示不全
在mount的时候没有加-t vfat时,而是mount自己默认的一种文件系统(是MSDOS,因为在kernel配置中选择了支持这种文件系统),所以mount后的结果就是MSDOS FS了,文件名只能是8+3(8个文件名+3个后缀)。

解决的方法是在mount时主动指明文件系统的类型:
mount -t vfat

2.Busybox 挂载U盘 通过rdesktop重定向到服务器,中文文件名显示乱码

a.在busybox 中添加 locale support 支持
 Busybox Settings  --->    
     General Configuration  --->    
[*] Enable locale support (system needs locale for this to work)                   
[*] Support Unicode
[*]   Use libc routines for Unicode (else uses internal ones)
 

b.修改busybox源码目录下的./libbb/printable_string.c
先找到这样一段:
  if (c < ' ')
  break;
    if (c >= 0x7f)
   break;
  s++;

注释掉某两行(34,35行):
/* if (c >= 0x7f) */
/* break; */

然后找这样一段(48行):
    unsigned char c = *d;
    if (c == '\0')
     break;
   if (c < ' ' || c >= 0x7f)
     *d = '?';
    d++;

把 if (c < ' ' || c >= 0x7f)  改成   if (c < ' ')  

c.在系统文件的 /usr/lib 目录下 添加 gconv (字符转换)目录(从PC上复制过来(/usrlib/gconv/))
d.设置系统的 LANG 为 zh_CN.UTF-8
e. 挂载U 盘时指定字符编码
 mount -t vfat -o codepage=936,iocharset=utf8  /dev/sda1 /mnt
f. 内核配置
设置 FAT 的默认 codepage 为 936,默认iocharset 为utf8
---- DOS/FAT/NT Filesystems ----
  [*] VFAT (Windows-95) fs support                                                             
  (936) Default codepage for FAT                                                                             
  (utf8) Default iocharset for FAT 

--- Base native language support ---                                                                        
  (cp936) Default NLS Option  
[*]   Simplified Chinese charset (CP936, GB2312) 
[*]   NLS UTF-8
 
设置默认语言支持为 cp936(即中文),添加支持的字符集,GB2312,UTF-8
 
 
阅读(5171) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~