Экспорт MySQL в текстовый файл Unicode - PullRequest
0 голосов
/ 26 марта 2012

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

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

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

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

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

1 Ответ

0 голосов
/ 26 марта 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...