我的linux服务器上已经保存了很多拉链,管理它们的应用程序必须提取包含的文件。
然而,拉链的上传者有时会在文件名中加入重音字符,所以当php提取文件名时,我可以得到一些带有混乱编码的名字,特别是当在windows中创建zip时。
从zip中提取文件名的代码是:
$ zip = zip_open($ zipFile);
while($ zip_entry = zip_read($ zip))
$ ArrayInternalFileNames [] = zip_entry_name($ zip_entry);
我对$ ArrayInternalFileNames内容做了什么,以便不使用“混乱编码”字符?问题是由于编码混乱,php字符串函数不能很好地处理这些文件名。
答案 0 :(得分:1)
您可以尝试使用iconv()
将文件名音译为ASCII:
$filename = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
答案 1 :(得分:1)
除了Sammitch的回答。
另一种音译选择:
$file_name=iconv("UTF-8", "ISO-8859-1//TRANSLIT", $file_name);
答案 2 :(得分:0)
答案 3 :(得分:0)
确保您的源名称是UTF-8。然后:
$file_name=iconv("UTF-8", "IBM850", $file_name);
zip中的文件名必须为IBM850
编码。