Я создаю инструмент импорта данных для административного раздела веб-сайта, над которым я работаю. Данные представлены на французском и английском языках и содержат много символов с диакритическими знаками. Всякий раз, когда я пытаюсь загрузить файл, проанализировать данные и сохранить их в своей базе данных MySQL, акценты заменяются на «?».
У меня есть текстовые файлы, содержащие данные (кодировка iso-8859-1), которые я загружаю на свой сервер с помощью библиотеки загрузки файлов CodeIgniter. Затем я прочитал файл в PHP.
Мой код похож на этот:
$this->upload->do_upload()
$data = array('upload_data' => $this->upload->data());
$fileHandle = fopen($data['upload_data']['full_path'], "r");
while (($line = fgets($fileHandle)) !== false) {
echo $line;
}
Это создает строки с заменой акцентов на «?». Все остальное правильно.
Если я загружаю свой загруженный файл со своего сервера по FTP, кодировка по-прежнему iso-8850-1, но разница показывает, что файл изменился. Однако, если я открою файл в TextEdit, он отобразится правильно.
Я попытался использовать метод PHP stream_encoding
, чтобы явно установить для моего файлового потока значение iso-8859-1, но в моей сборке PHP нет этого метода.
Когда у меня закончились идеи, я попытался обернуть свои строки как в utf8_encode
, так и в utf8_decode
. Ни один из них не работал.
Если у кого-нибудь есть какие-либо предложения о том, что я мог бы попробовать, я был бы очень благодарен.