Файл поверх SFTP показывает дополнительные символы в начале - PullRequest
0 голосов
/ 28 декабря 2018

В 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;
}

Это возвращает:

Service.php в строке 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 "" "

1 Ответ

0 голосов
/ 28 декабря 2018

Я нашел решение ....

$file = $sftp->get("/info/$fileName");
$file = mb_convert_encoding($file, "UTF-8", "ISO-8859-15" ); // Add this

Проблема была в кодировке.

...