2013-07-10 3 views
0

Привет у меня есть этот код, чтобы экспортировать свои данные в .xls, но у меня есть проблемы с кодировкой, это мой кодPHP, чтобы преуспеть кодировку

<?php 
header("Content-Type: text/plain;charset=UTF-8"); 


function cleanData(&$str) 
    { 
    $str = preg_replace("/\t/", "\\t", $str); 
    $str = preg_replace("/\r?\n/", "\\n", $str); 
    if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; 
    } 

    // filename for download 
    $filename = "website_data_" . date('Ymd') . ".xls"; 

    header("Content-Disposition: attachment; filename=\"$filename\""); 
    header("Content-Type: application/vnd.ms-excel; charset=UTF-8"); 


$data = array(
array('firstname' =>'Name', 'last_name' => 'Last Name', 'age' => '25'), 
array('firstname' =>'name 2', 'last_name' => 'Last Name 2', 'age' => '27') 
); 


$flag = false; 
    foreach($data as $row) { 
    if(!$flag) { 
     // display field/column names as first row 
     echo implode("\t", array_keys($row)) . "\r\n"; 
     $flag = true; 
    } 
     array_walk($row, 'cleanData'); 
    echo implode("\t", array_values($row)) . "\r\n"; 
    } 
    exit; 
?> 

я стараюсь Encoding изо-8859-7, и окна -1253 и UTF-8 я хочу экспортировать с греческими символами все мои данные в UTF-8. Спасибо за помощь

+0

UTF-8 выглядит путь. Что не работает? –

+0

Ваша функция pureData() не поддерживает UTF-8; но почему бы просто не дать вашему выходному файлу заголовок спецификации UTF-8 и использовать встроенную функцию PHP [fputcsv()] (http://php.net/manual/en/function.fputcsv.php) ... она обрабатывает множество проблем, с которыми ваша домашняя альтернатива не может легко справиться с –

+1

. Вы задаете тип файла '.xls' и mimetype для' application/vnd.ms-excel'. Вы настраиваете документ Excel, но отправляете CSV-данные. Попробуйте тип файла '.csv' и mimetype' text/csv'. –

ответ

0
<?php 
include('connect.php'); 
header("Content-Type: text/plain; charset=UTF-8"); 


function cleanData(&$str) 
    { 
    if($str == 't') $str = 'TRUE'; 
    if($str == 'f') $str = 'FALSE'; 
    if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) { 
     $str = "'$str"; 
    } 
    if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; 

    } 

    // filename for download 
    $filename = "website_data_" . date('Ymd') . ".csv"; 

    header("Content-Disposition: attachment; filename=\"$filename\""); 
    header("Content-Type: text/csv; charset=UTF-8"); 

    $out = fopen("php://output", 'w'); 

$flag = false; 
    $result = mysql_query("SELECT * FROM categories ORDER BY id") or die('Query failed!'); 
    while(false !== ($row = mysql_fetch_assoc($result))) { 
    if(!$flag) { 
     // display field/column names as first row 
     fputcsv($out, array_keys($row), ',', '"'); 
     $flag = true; 
    } 
    array_walk($row, 'cleanData'); 
    fputcsv($out, array_values($row), ',', '"'); 
    } 

    fclose($out); 
    exit; 
?> 

меняю свой код и в текстовом редакторе я могу видеть мои символы хорошо и кодирование на греческом, но когда я открыть в Microsoft Excel это нечитаемый

+0

Напишите заголовок спецификации UTF-8 сразу после открытия файла, прежде чем писать какие-либо данные –

Смежные вопросы