我目前能够将我的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";
任何建议都将不胜感激!
提前致谢。
答案 0 :(得分:0)
从数据库信息创建文件时,HTTP标头完全无关紧要。由于您的应用目前使用的是UTF-8,因此您有两种选择:
直接在UTF-16中获取信息,即运行SET NAMES somethingelse
而不是SET NAMES utf8
,其中 somethingelse 是您的目标编码。您可以使用SHOW CHARSET
。
获取UTF-8中的信息并将其转换为Unicode-16LE,然后再将其保存到文件中。您可以使用iconv()或mb_convert_encoding()。