SFTP 上的文件在开头显示附加字符
File over SFTP shows additonal chars at the beginning
我在 symfony 3.4 中有一个函数,它抛出文件中不存在的字符:
use Exception;
use phpseclib\Net\SFTP;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\VarDumper\VarDumper;
public static function getInfoFile(string $fileName, ContainerInterface $container)
{
$host = $container->getParameter('host');
$sftp = new SFTP($host);
if (!$sftp->login($container->getParameter('user'), $container->getParameter('pass'))) {
throw new Exception('Cannot connect to ' . $host);
}
$file = $sftp->get("/info/$fileName");
vardumper::dump($file); // See Response below
$file = preg_split('/\R/', $file);
reset($file);
// vardumper::dump($file); // This would now return each array element prepended with b"""
return $file;
}
这个returns:
Service.php on line 30: b""" A;B;C;D;E;F\r\n 1;2;3;4;5;6\r\n
这个b"""在文件中找不到。我试过用Notepad++和Excel打开,但看不到。
当我尝试将 substr 与此结合使用时,b""" 保留下来并且真实文件被剪切。
我做错了什么?
我想将每一行的 csv 文件读入一个没有这些神秘 b"""
的数组中
我找到了解决方案....
$file = $sftp->get("/info/$fileName");
$file = mb_convert_encoding($file, "UTF-8", "ISO-8859-15" ); // Add this
问题出在编码上。
我在 symfony 3.4 中有一个函数,它抛出文件中不存在的字符:
use Exception;
use phpseclib\Net\SFTP;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\VarDumper\VarDumper;
public static function getInfoFile(string $fileName, ContainerInterface $container)
{
$host = $container->getParameter('host');
$sftp = new SFTP($host);
if (!$sftp->login($container->getParameter('user'), $container->getParameter('pass'))) {
throw new Exception('Cannot connect to ' . $host);
}
$file = $sftp->get("/info/$fileName");
vardumper::dump($file); // See Response below
$file = preg_split('/\R/', $file);
reset($file);
// vardumper::dump($file); // This would now return each array element prepended with b"""
return $file;
}
这个returns:
Service.php on line 30: b""" A;B;C;D;E;F\r\n 1;2;3;4;5;6\r\n
这个b"""在文件中找不到。我试过用Notepad++和Excel打开,但看不到。
当我尝试将 substr 与此结合使用时,b""" 保留下来并且真实文件被剪切。
我做错了什么? 我想将每一行的 csv 文件读入一个没有这些神秘 b"""
的数组中我找到了解决方案....
$file = $sftp->get("/info/$fileName");
$file = mb_convert_encoding($file, "UTF-8", "ISO-8859-15" ); // Add this
问题出在编码上。