2012-03-26 5 views
0

В настоящее время я могу экспортировать свой MySQL-запрос в текстовый файл с разделителями табуляции, однако он сохраняет с кодировкой UTF8. Требование этого проекта состоит в том, что он сохраняет текстовый файл Unicode-16LE.Экспорт MySQL в файл Unicode txt

Моя текущая функция выглядит следующим образом:

$select = "SELECT -removed-"; 
$export = mysql_query ($select) or die ("Sql error : " . mysql_error()); 
$fields = mysql_num_fields ($export); 

for ($i = 0; $i < $fields; $i++) { 
    $header .= mysql_field_name($export , $i) . "\t"; 
} 

while ($row = mysql_fetch_row($export)) { 
    $line = ''; 
    foreach ($row as $value) { 
    if ((!isset($value)) || ($value == "")) { 
     $value = "\t"; 
    } else { 
     $value = str_replace('"' , '""' , $value); 
     $value = '' . $value . '' . "\t"; 
    } 
    $line .= $value; 
    } 
    $data .= trim($line) . "\n"; 
} 

$data = str_replace("\r" , "" , $data); 

header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=my_file.txt"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
print "$header\n$data"; 

Любые советы будут оценены!

Заранее спасибо.

+0

Это способ создания $ данных, имеет большее значение, чем заголовки, показывает нам, что –

+0

Вы пробовали преобразование вывода в UTF-16LE? –

+0

вы можете преобразовать $ data в UTF-16LE с 'iconv()' – Vytautas

ответ

0

HTTP-заголовки довольно неактуальны, когда вы создаете файл из базы данных. Так как ваше приложение в настоящее время использует UTF-8, у вас есть два варианта:

  1. Fetch информацию непосредственно в UTF-16, то есть, запустить SET NAMES somethingelse вместо SET NAMES utf8, где somethingelse является вашей целевой кодировке. Вы можете получить доступные кодировки с SHOW CHARSET.

  2. Извлеките информацию в UTF-8 и преобразуйте ее в Юникод-16LE перед сохранением в файл. Вы можете использовать iconv() или mb_convert_encoding().

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