中文路径, 文件转换

1.今天遇见一个文件就是文件路径有空格,UTF-8的空格会变成20%,需要转码一下才行:

URLDecoder.decode(filePath,"UTF-8")

这样就可以了


2.然后使用jsp上传文件:


需要使用下面的:

String userid = request.getParameter("userid");
 try{  
       if(ServletFileUpload.isMultipartContent(request)){  
         DiskFileItemFactory dff = new DiskFileItemFactory();//创建该对象  
         dff.setSizeThreshold(1024000);//指定在内存中缓存数据大小,单位为byte  
         ServletFileUpload sfu = new ServletFileUpload(dff);//创建该对象  
         //设置编码
         sfu.setHeaderEncoding("UTF-8");
         FileItemIterator fii = sfu.getItemIterator(request);//解析request 请求,并返回FileItemIterator集合  
         while(fii.hasNext()){  
           FileItemStream fis = fii.next();//从集合中获得一个文件流  
           dealFile(fis.openStream(), userid);
         }  
         response.getWriter().println("File upload successfully!!!");//  
       }  
   }catch(Exception e){  
       e.printStackTrace();  
   }  


### 处理文件系统中不支持中文路径的问题 当遇到文件系统不支持中文字符的情况时,可以通过多种方式来解决问题并找到合适的替代方案或换方法。 #### 使用URL编码 一种常见的解决方案是对含有中文字符的路径进行URL编码。这种方式能够有效地将任何非ASCII字符化为可被广泛接受的形式。例如,在Python中可以利用`urllib.parse.quote()`函数来进行此操作: ```python from urllib.parse import quote path_with_chinese = "C:\\我的文档\\example.txt" encoded_path = quote(path_with_chinese.encode('utf-8')) print(encoded_path) ``` 这会输出类似于 `%E6%88%91%E7%9A%84%E6%96%87%E6%A1%A3/example.txt` 的字符串[^1]。 #### 换为拼音表示法 另一种可行的方法是采用汉语拼音代替汉字作为文件夹名称的一部分。这种方法不仅解决了兼容性问题,还提高了英文环境下的易读性和理解度。有专门用于换成拼音的库可以帮助完成这项工作,比如 `pypinyin` 库: ```bash pip install pypinyin ``` 接着可以在程序里这样调用它: ```python from pypinyin import lazy_pinyin chinese_folder_name = "我的图片" pinyin_version = "_".join(lazy_pinyin(chinese_folder_name)) new_path = f"C:/Users/{pinyin_version}/image.jpg" print(new_path) ``` 这段代码将会打印出形如 `"C:/Users/wode_tupian/image.jpg"` 这样的新路径[^2]。 #### 创建映射关系表 如果项目规模较大且存在大量已有的带中文命名的数据集,则建议建立一个从原始中文路径到新的纯英文字母组成的唯一ID之间的双向映射表格。每当访问某个特定资源时先查询该表获取对应的合法路径再执行实际I/O操作即可。 通过上述几种手段之一或多者组合应用,便能够在很大程度上缓解由于操作系统层面对于某些语言字符的支持不足所带来的困扰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值