mysql — данные, импортированные из CSV с PHP, содержат поврежденные скрытые символы

Я использую Пакет Laravel Excel импортировать файл CSV в мое приложение, и я пытаюсь сопоставить его данные с моей базой данных.

Код на данный момент:

Excel::load($file, function($reader) { //Load it into Excel package
$reader->each(function($row) { //Loop through row by row

$firstname = $row->forename;
$surname = $row->surname;

$firstname = str_replace('"', '', $firstname); //Remove the enclosure "$surname = str_replace('"', '', $surname);

$client = DB::table('clients')->where('firstname', $firstname)->where('surname', $surname)->first();

if ($client!=null) {
print $client->id."<br><br><br>";
} else {
print "Fail<br><br><br>";
}
});
})->get();

Все запросы терпят неудачу, даже когда я уверен, что совпадение должно быть сделано. Запустив некоторую отладку запроса, чтобы получить запрос и привязки, я вижу это (пример данных):

string 'select * from `clients` where `firstname` = ? and `surname` = ? limit 1' (length=71)

array (size=2)
0 => string 'E�l�i�z�a�b�e�t�h' (length=17)
1 => string '��W�e�s�s�o�n��' (length=15)

Как видите, все строки, взятые из CSV, имеют после каждого символа.

Я предполагаю, что это может быть какой-то проблемой кодирования? Нужно ли экранировать или обрабатывать строки из файла CSV, прежде чем их можно будет использовать как обычные строки PHP?

Большое спасибо за вашу помощь

1

Решение

Пожалуйста, проверьте код ниже, я нашел то же самое здесь
http://www.maatwebsite.nl/laravel-excel/docs/import#extra
проверить ‘Входная кодировка‘ раздел
Надеюсь это поможет

// When utilising a closure, you can pass the input encoding as third parameter.
Excel::load('filename.csv', function($reader) {

}, 'UTF-8');
0

Другие решения

Других решений пока нет …