uni-app iOS端下载文件后出现乱码,打不开
uni-app iOS端下载文件后出现乱码,打不开
操作步骤:
- 下载文件然后打开
预期结果:
- 正常打开
实际结果:
- 提示未找到文件名
bug描述:
系统版本 ios14.6
下载文件中有中文名,下载下来就乱码。
用uni.openDocument 打开就报错,报错信息如下截图

| 信息类别 | 内容 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Mac |
| PC开发环境版本 | 11.4 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.1.18 |
| 手机系统 | iOS |
| 手机系统版本 | iOS 14 |
| 手机厂商 | 苹果 |
| 手机机型 | iphone11 |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app iOS端下载文件后出现乱码,打不开的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
先规范一下你们的文件命名规则吧
你这个文件叫 “扫描全能王 2021-06-18 09.11.pdf” 有中文和空格等特殊字符
另外 openDocument 这个在iOS上 打开路径时 不能有中文
这边还是先规范一下资源的名称 避免中文
更多关于uni-app iOS端下载文件后出现乱码,打不开的实战教程也可以访问 https://www.itying.com/category-93-b0.html
iOS系统中,下载中文文件名时出现乱码是常见问题,通常由编码不匹配导致。在uni-app中,使用uni.downloadFile下载文件时,iOS系统对非ASCII字符(如中文)的文件名支持不佳,可能自动转换为URL编码或其他格式,导致下载后文件名显示异常,进而使uni.openDocument无法正确识别文件路径。
解决方案:
- 检查下载URL编码:确保下载链接中的中文文件名经过正确的URL编码(如使用
encodeURIComponent()处理),避免iOS系统解析时出错。 - 重命名文件:下载后通过代码将文件重命名为英文或数字名称,再调用
uni.openDocument。例如:uni.downloadFile({ url: 'https://example.com/文件.pdf', success: (res) => { if (res.statusCode === 200) { const tempPath = res.tempFilePath; // 重命名为英文 const newPath = `${plus.io.PUBLIC_DOWNLOADS}/document.pdf`; plus.io.resolveLocalFileSystemURL(tempPath, (entry) => { entry.moveTo(plus.io.PUBLIC_DOWNLOADS, 'document.pdf', () => { uni.openDocument({ filePath: newPath }); }); }); } } });

