user2287965
user2287965

Reputation: 203

PHPEXCEL set UTF-8 encode

I have headers:

            header('Content-Type: text/html; charset=UTF-8');
            header("Content-type: application/octetstream");
            header('Content-Disposition: attachment; filename="export.csv"');

but decoding not work correct if I have word in database "Pagrindinė" in excel show "PagrindinÄ", what is wrong with my headers ?

Upvotes: 5

Views: 30652

Answers (3)

Alireza S.T.
Alireza S.T.

Reputation: 19

try this:

 header('Content-Transfer-Encoding: binary');
header("Content-Type: application/octet-stream"); 
header("Content-Transfer-Encoding: binary"); 
header('Expires: '.gmdate('D, d M Y H:i:s').' GMT'); 
header('Content-Disposition: attachment; filename = "Export '.date("Y-m-d").'.xls"'); 
header('Pragma: no-cache'); 

//these characters will make correct encoding to excel 
echo chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $out); 

Upvotes: 0

PedroSaiz
PedroSaiz

Reputation: 143

Maybe if you change the format text encoding of your .php file when you save it, to Unicode (UTF-8). It works for me.

Hope it helps.

Upvotes: 0

M8R-1jmw5r
M8R-1jmw5r

Reputation: 4996

What is wrong with my headers ?

Nothing, your headers are looking fine.

What is wrong with Excel?

The user who opens the file in Excel needs to tell Excel that the file is in UTF-8 encoding. Direct that user to contact the vendor of the software it uses for her/his support options.

Users of LibreOffice or a derivate of it do not have that problem btw., so one solution is to tell those to install a suite of such, open the CSV file and save it as Excel file for example.

Or you directly create the Excel file on your server.

Upvotes: 3

Related Questions