当前位置: 首页 » 博客 » 技术文章 » 正文

解决Linux下fat32创建中文路径Windows下不识别

放大字体  缩小字体 发布日期:2017-11-23  作者:GoodMan  浏览次数:402
核心提示:FAT32文件系统在linux下一直不友好,比如想在里面创建中文的路径,直接的创建的话在linux下能看到中文,查到Wwindows下就不行了
FAT32文件系统在linux下一直不友好,比如想在里面创建中文的路径,直接的创建的话在linux下能看到中文,移到Wwindows下就不行了,而且在linux下U盘默认挂载中文还是乱码,通过一阵摸索可以解决掉这个问题 >首先开启内核的936字符集支持 ```bash File systems ---> Native Language Support ---> (utf8) Default NLS Option ///此括号内为utf8 <*> Simplified Chinese charset (CP936, GB2312) <*> NLS ISO 8859-1 (Latin 1; Western European Languages) <*> NLS UTF-8 DOS/FAT/NT Filesystems ---> (936) Default codepage for FAT (utf8) Default iocharset for FAT ``` >挂载U盘或SD 在挂载SD卡或者U盘的时候不要使用默认的配置,使用下面的命令来挂载就好了: ```bash mount -t vfat /dev/sda1 /mnt -o codepage=936,iocharset=utf8 ``` 最后给出一个可以linux下创建多层的目录的函数类似于: ```bash mkdir -p /mnt/dir1/dir2/dir4 ``` ```C static int do_mkdir(const char *path, mode_t mode) { struct stat st; int status = 0; if (stat(path, &st) != 0) { if (mkdir(path, mode) != 0 && errno != EEXIST) status = -1; } else if (!S_ISDIR(st.st_mode)) { errno = ENOTDIR; status = -1; } return(status); } int mkpath(const char *path, mode_t mode) { char *pp; char *sp; int status; char *copypath = strdup(path); status = 0; pp = copypath; while (status == 0 && (sp = strchr(pp, '/')) != 0) { if (sp != pp) { *sp = '\0'; status = do_mkdir(copypath, mode); *sp = '/'; } pp = sp + 1; } if (status == 0) status = do_mkdir(path, mode); free(copypath); return (status); } ```
 
关键词: FAT32,中文
 
[ 博客搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 违规举报 ]  [ 关闭窗口 ]

 
0条 [查看全部]  相关评论

 
推荐图文
推荐博客
点击排行