vnd utf8 type name content codificacion application php utf-8

utf8 - phpexcel codificacion



php header excel y utf-8 (8)

ob_start(); echo ''Désçàui''; header("Content-Type: application/vnd.ms-excel; charset=utf-8"); header("Content-type: application/x-msexcel; charset=utf-8"); header("Content-Disposition: attachment; filename=Test.xls"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); ob_end_flush();

Lo que estoy obteniendo en el archivo de Excel es Désçà ui

Sin embargo, me sale Désçàui cuando intento

ob_start(); echo ''Désçàui''; header("Content-Type: text/html; charset=utf-8"); ob_end_flush();

¿Algún experto en ayuda?

PD. El archivo se guarda en DW con Título / Codificación Unicode (Utf-8).


Convertir utf8 a entidades html funcionó bastante bien para mí:

$str = ''utf-string ...''; if (mb_detect_encoding($str ) == ''UTF-8'') { $str = mb_convert_encoding($str , "HTML-ENTITIES", "UTF-8"); } header(''Content-type: application/x-msdownload; charset=utf-16''); header(''Content-Disposition: attachment; filename=companies.xls''); header(''Pragma: no-cache''); header(''Expires: 0''); echo $str ;


Esta línea de código UTF-8 BOM hizo que mis caracteres UTF-8 funcionen bien:

header("Content-type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=''".$file_name."''"); header("Pragma: no-cache"); header("Expires: 0"); echo "/xEF/xBB/xBF"; //UTF-8 BOM echo $out;


Fuente http://www.mwasif.com/2007/5/download-data-csv-using-php/

La solucion funciono para mi

El danés Zahur dijo:

7 de octubre de 2009 a las 7:23 pm

Si sus contenidos están en formato UTF-8, entonces no es necesario convertir la codificación. Simplemente inicie su flujo de archivo / salida con UTF-8 BOM después de los encabezados.

echo pack("CCC",0xef,0xbb,0xbf);

Y el encabezado debe contener codificación UTF-8

header( "Content-type: application/vnd.ms-excel; charset=UTF-8" );

Funcionará a la perfección porque Excel reconocerá el conjunto de caracteres del archivo con bytes BOM.


Los encabezados de content-type son relevantes solo para el navegador. No tienen efecto en los archivos descargados. Una vez que se guarda el archivo, depende de la aplicación decidir cómo trata los datos en el archivo.

El ejemplo que muestra no es un archivo de Excel válido en primer lugar. Cuando se encuentra con lo que debe pensar que es un archivo roto, es probable que Excel cambie a algún procesamiento predeterminado que asuma windows-1252 o algún otro conjunto de caracteres de un solo byte.

Tendrías que darle a Excel un archivo adecuado para abrir. Alternativamente, puede ser posible usar el viejo truco "Output HTML pero save as XLS" y especificar una codificación UTF-8 en ese archivo HTML.


No estoy seguro, pero puede ser que Excel no pueda manejar utf8 (puede depender de la versión). Pero puede manejar utf16, así que intenta convertir el conjunto de caracteres. Esto me funciona (en excel2002):

echo mb_convert_encoding(''Désçàui'',''utf-16'',''utf-8'');


No sé cómo estás generando el archivo de Excel. Pero, si lo está haciendo desde una salida HTML, puede agregar lo siguiente al principio:

<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />

Saludos


Prueba esto:

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);


prueba esto

<?php header("Content-Type: application/vnd.ms-excel"); header(''Content-Disposition: attachment; filename="sample.xls"''); echo " <html xmlns:o=/"urn:schemas-microsoft-com:office:office/" xmlns:x=/"urn:schemas-microsoft-com:office:excel/" xmlns=/"http://www.w3.org/TR/REC-html40/"> <html> <head><meta http-equiv=/"Content-type/" content=/"text/html;charset=utf-8/" /></head> <body> "; echo " <table> <tr> <th rowspan=/"2/" nowrap=/"nowrap/">เลขที่บัญชี</th> <th rowspan=/"2/" nowrap=/"nowrap/">ชื่อ-สกุล ลูกค้า</th> <th rowspan=/"2/" nowrap=/"nowrap/">OS/Balance</th> <th rowspan=/"2/" nowrap=/"nowrap/">วันที่</th> <th rowspan=/"2/" nowrap=/"nowrap/">เวลา</th> <th rowspan=/"2/" nowrap=/"nowrap/">Action Code</th> <th rowspan=/"2/" nowrap=/"nowrap/">Amount</th> <th colspan=/"5/" nowrap=/"nowrap/">ผลการติดตาม</th> </tr> <tr> <th nowrap=/"nowrap/">ที่อยู่บ้าน</th> <th nowrap=/"nowrap/">เบอร์โทรบ้าน</th> <th nowrap=/"nowrap/">เบอร์โทรมือถือ</th> <th nowrap=/"nowrap/">ที่อยู่ที่ทำงาน</th> <th nowrap=/"nowrap/">เบอร์โทรที่ทำงาน</th> </tr> <tr> <td>acc</td> <td>name</td> <td>balance</td> <td>date</td> <td>time</td> <td>code</td> <td>amount</td> <td>h-addr</td> <td>h-tel</td> <td>cell</td> <td>w-addr</td> <td>w-tel</td> </tr> </table> "; echo "</body></html>"; ?>