Вся кодировка mysql - utf8.
Пытаюсь загрузить текстовый файл в кодировке ANSI (как говорит notepad++)
Читаю строки и загружаю в колонку с кодировкой utf8_general_ci.
Проблема в том, что русские символы изчезают.
Загружать файлы будут пользователи с кодировкой utf8 и ANSI, поэтому проблему надо как-то решить.
Делать iconv каждой строке слишком дорого, поэтому надо найти другое решение.
UPD:
Сейчас я сделал это так:
$data = [];
if ($handle = fopen($_FILES['file']['tmp_name'], "r")) {
while (!feof($handle)) {
$line = fgets($handle, 4096);
$line = trim($line);
$encode = mb_detect_encoding($line, ['UTF-8'], true); // false если русские символы
if ($encode === false)
{
$line = iconv("windows-1251", 'utf-8', $line);
}
if (!empty($line))
{
$data[] = [
'good_id' => $goodId,
'data' => $line
];
}
}
fclose($handle);
}