繁体   English   中英

文件名中的Umlauts被点代替

[英]Umlauts in filenames are replaced with dots

因此,用户尝试将某些文件名中带有变音符号的文件上传到我的系统中(系统以laravel作为框架运行apache2)。 该脚本的作用是将文件上传到服务器,并在数据库中保存一个条目(编码为utf8_general_ci)。但是,当他尝试下载文件时,出现“找不到文件”错误。 我查看了一下,文件已正确上传到服务器上。当我下载它们并查看控制台中的文件名时,它们看起来像这样:

看截图

您会注意到最后一个文件显示正确。 我试图重命名它,然后只用相同的字母替换了变音符号,并修复了它。您知道问题出在哪里吗?

查看您的上传脚本使用哪种编码类型。 可能的解决方案是在保存在磁盘和数据库上之前重命名文件(仅允许使用az和数字),这是一种很好的做法。

听起来像是缺少Unicode规范化的情况。

有多种编码某些字形的方法。 例如,可以使用预先组合的单个字形U + 00E4或作为( U + 0061 )的组合序列,然后是组合透音符号(U + 0308)来表示

您的代码应确定一个Unicode规范化(取决于您的平台,如果像屏幕截图所示,如果您使用的是Wintendo,我想是NFKC,但它不是我非常友好的平台),并确保所有尝试打开文件之前,文件名已标准化。

有关更多信息,请参见https://en.wikipedia.org/wiki/Unicode_equivalence

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM