-
2800+
全球覆盖节点
-
0.01s
平均响应时间
-
70+
覆盖国家
-
130T
输出带宽
小伙伴们,前不久我被一个家的小伙伴给“逼”得满桌子长大腿——他把他那保镖级防火墙的云服务器上挂了一堆中文图片,结果他自己却拿不到文件。于是我打开电脑,点了一下云存储的文件夹,嘛,图片名被翻译成了“%E4%BD%A0%E5%A5%BD.jpg”,而且根本打不开。趁着这个机会,我做了点侦查,搜了一堆网文、官方文档、技术博客。接下来,让我来盘点几个原因,帮你百试百合稳稳开。
1️⃣ 代码页不匹配:在 Windows 系统里,默认用 GBK 或 UTF-8。但如果你用的是 Linux,并且通过 FTP 或 SFTP 上传文件时,ftp 客户端默认使用 CP936,那中文就会被乱码。解决办法:在 Linux 服务器确认 /etc/locale.conf 对应 zh_CN.UTF-8,然后用 rclone 或 s3cmd 传文件,指定 --encoding=utf-8。
2️⃣ 主机名或 Bucket 名不允许中文:AWS S3、阿里云 OSS、腾讯云 COS 等在创建 Bucket 时都明确禁止中文。你可以把中文文件名改成英文或拼音,或者直接生成一个改名脚本。官方教程里都提到:默认域名是 “bucket-name.s3.amazonaws.com”,一旦出现中文就会返回 400。
3️⃣ URL 编码踩雷:有些开发者习惯在前端直接把文件名拼进地址,直接访问 https://bucket-name.s3.amazonaws.com/大头贴.jpg。S3 无法识别中文路径,错误码 403。答案是:先 urlencode 再指向。
4️⃣ 代理服务器过滤中文参数:公司网络里的代理或企业网关往往会把除 ASCII 之外的字符过滤掉。你可以在 VPC 的 NAT 或 CGW 设置里,允许 “Accept-Charset: UTF-8” 或者直接使用 CDN(AWS CloudFront、阿里云 CDN)。
5️⃣ 存储桶策略错误:很多人只覆盖了 S3 的公共读权限,却忘了加上 `s3:GetObject` 的 “Condition” 里 `StringLike` 对象键支持中文。记得修改 bucket policy,加入 `"StringEquals": {"s3:ExistingObjectTag/Language": "zh-CN"}` 之类的。
6️⃣ SSL 证书域名失配:如果你使用 CloudFront 或阿里云 CDN,而且你的域名是自签证书,证书中不包含中文字符,那 HTTPS 连接会直接掉线。解决办法:把域名全部改成英文或者纯数字。
7️⃣ 传输过程中带宽限制:中文文件名虽然短,但每个汉字对应 3 个字节的 UTF-8,这在小带宽环境下 HDD‑SSD 读取会拖后腿。别怕,开启压缩、分片上传(multipart)来解决。
8️⃣ 服务器 ACL 权限错位:一些云服务器在默认情况下,未开启 SELinux 或 AppArmor 的时候,文件权限 664 也能被访问,但阿里云 ECS 的安全组也会阻拦任何非标准端口的流量。你得把安全组改成开放 HTTPS、S3 端口。
9️⃣ 云磁盘挂载错误:挂载时忘记加 `noexec` 或者 `/etc/fstab` 用了 `umask 0027`,导致文件名被自动转义。改挂载选项,对应中文文件权限改成 644 试
请在这里放置你的在线分享代码爱美儿网络工作室携手三大公有云,无论用户身在何处,均能获得灵活流畅的体验
2800+
0.01s
70+
130T