我会很简短。我的 FTP 函数返回错误的文件名编码
$conn_id = ftp_connect("site.com");
ftp_login($conn_id, "login", "pass");
ftp_pasv($conn_id, true);
$buff = ftp_nlist($conn_id, "./");
print_r($buff);
-> // result
array() {
[0]=> "��.txt"
}
文件名采用 Windows-1251 编码。
我尝试通过 nodejs 连接到 FTP,但它也返回了一些令人毛骨悚然的东西 — òð.txt
。
不过,我的桌面客户端 (WinSCP) 可以正常工作。
PS:我尝试使用 utf8_encode - 但这对我也不起作用。
最佳答案
如果编码是您可以尝试使用 mb_convert_encoding 更改它.下面的代码应该输出正确的值。
<?php
echo mb_convert_encoding($buff[0], "UTF-8");
//or
echo mb_convert_encoding($buff[0], "UTF-8", "windows-1251");
?>
如果它不起作用,您可以尝试使用类似的方法找到正确的编码
<?php
foreach(mb_list_encodings() as $chr){
echo mb_convert_encoding($buff[0], 'UTF-8', $chr)." : ".$chr."<br>";
}
?>
关于PHP - FTP 文件名编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16759507/