Accents in uploaded file being replaced with '?'

Posted by Katfish on Stack Overflow See other posts from Stack Overflow or by Katfish
Published on 2011-06-22T23:31:41Z Indexed on 2011/06/23 0:22 UTC
Read the original article Hit count: 234

I am building a data import tool for the admin section of a website I am working on. The data is in both French and English, and contains many accented characters. Whenever I attempt to upload a file, parse the data, and store it in my MySQL database, the accents are replaced with '?'.

I have text files containing data (charset is iso-8859-1) which I upload to my server using CodeIgniter's file upload library. I then read the file in PHP.

My code is similar to this:

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

This produces lines with accents replaced with '?'. Everything else is correct.

If I download my uploaded file from my server over FTP, the charset is still iso-8850-1, but a diff reveals that the file has changed. However, if I open the file in TextEdit, it displays properly.

I attempted to use PHP's stream_encoding method to explicitly set my file stream to iso-8859-1, but my build of PHP does not have the method.

After running out of ideas, I tried wrapping my strings in both utf8_encode and utf8_decode. Neither worked.

If anyone has any suggestions about things I could try, I would be extremely grateful.

© Stack Overflow or respective owner

Related posts about php

Related posts about codeigniter