【发布时间】:2014-04-22 20:09:17
【问题描述】:
我正在尝试从以 UTF-8 编码的 MySQL 数据库编写字符编码设置为 UTF-16BE 的 CSV 文件。
我的代码是:
$f = fopen('file.csv', 'w');
$firstLineKeys = false;
// UTF-16BE BOM
fwrite($f, chr(254) . chr(255));
foreach ($lines as $line)
{
$lineEncoded = [];
foreach ($line as $key => $value)
{
$key = mb_convert_encoding($key, 'UTF-16BE', "auto");
$value = mb_convert_encoding($value, 'UTF-16BE', "auto");
$lineEncoded[$key] = $value;
}
if (empty($firstLineKeys))
{
$firstLineKeys = array_keys($lineEncoded);
fputcsv($f, $firstLineKeys);
$firstLineKeys = array_flip($firstLineKeys);
}
fputcsv($f, array_merge($firstLineKeys, $lineEncoded));
}
fclose($f);
当我在 OpenOffice 中打开文件时,它会尝试使用 Unicode 字符集导入它,但字段一团糟……当我将导入字符集切换为 UTF-8 时,它看起来是正确的。
任何帮助将不胜感激,谢谢
【问题讨论】:
标签: php mysql csv unicode encoding