将MySQL导出到Unicode txt文件

时间:2012-03-26 06:36:32

标签: php mysql unicode utf-8 export

我目前能够将我的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 :(得分:0)

从数据库信息创建文件时,HTTP标头完全无关紧要。由于您的应用目前使用的是UTF-8,因此您有两种选择:

  1. 直接在UTF-16中获取信息,即运行SET NAMES somethingelse而不是SET NAMES utf8,其中 somethingelse 是您的目标编码。您可以使用SHOW CHARSET

  2. 获取可用的编码
  3. 获取UTF-8中的信息并将其转换为Unicode-16LE,然后再将其保存到文件中。您可以使用iconv()mb_convert_encoding()