<?php
header("Content-Disposition: attachment; filename=price.xls");
header ( "Content-type: application/vnd.ms-excel;charset=windows-1251;" );
$conn = new mysqli('localhost', 'mysql', 'mysql');
mysqli_select_db($conn, 'mybase');
$sql = "SELECT * FROM `mytable`";
$setRec = mysqli_query($conn, $sql);
$columnHeader = '';
$columnHeader = "id" . "\t" . "Наименование" . "\t" . "Описание" . "\t";
$setData = '';
while ($rec = mysqli_fetch_row($setRec)) {
$rowData = '';
foreach ($rec as $value) {
$value = '"' . $value . '"' . "\t";
$rowData .= $value;
}
$setData .= trim($rowData) . "\n";
}
echo ucwords($columnHeader) . "\n" . $setData . "\n";
?>
尽管如此,它显示 krakozyabry。我mysqli_set_charset( $link, 'cp1251');
从数据库中正常推断,但标题都一样。
如果只是不正常显示表头,那么尝试用表头转换字符串的编码:
$columnHeader = mb_convert_encoding($columnHeader, "UTF-8");或者像这样:
$columnHeader = mb_convert_encoding($columnHeader, "UTF-8",mb_detect_encoding($columnHeader));另外,为了以后不会发生错误而
header投入UTF-8。如果这样做没有帮助,请检查编写此代码的文件本身的编码。有时会发生文件的编码不支持俄语字母,尽管它们在编辑器中正常显示,但我们实际上遇到了问题。