Экспорт PHP CSV UTF-8 со спецификацией не работаетPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Экспорт PHP CSV UTF-8 со спецификацией не работает

Сообщение Anonymous »

Я несколько дней застрял при экспорте CSV UTF-8 с китайскими символами, который отображал искаженный текст в Windows Excel. Я использую PHP и уже добавил байтовую метку спецификации и пробовал кодировать, но безуспешно.

Они отлично открываются в Notepad++, электронных таблицах Google и даже в Mac Numbers. Но не в Excel, который является требованием клиента. При открытии с помощью Notepad++ кодировка отображается как UTF-8. Если я вручную изменю его на UTF-8 и сохраню, файл в Excel откроется нормально.

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

Кроме того, CSV не сохраняется на сервере. Данные извлекаются из БД, а затем экспортируются напрямую.

Вот мои коды:

// Setup headers
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Description: File Transfer');
header("Content-type: text/csv");
header("Content-disposition: filename=".$filename.".csv");
header("Pragma: no-cache");

// First Method
$fp = fopen('php://output', 'w');
// Add BOM to fix UTF-8 in Excel, but doesn't work
fputs($fp, chr(0xEF) . chr(0xBB) . chr(0xBF) );

if ($fp) {

fputcsv($fp, array("Header"), ",");
fputcsv($fp, array($string_with_chinese_chars), ",");
}

fclose($fp);
exit();

// Second Method
$csv = "";
$sep = ",";
$newline = "\n"; // Also tried with PHP_EOL

$csv .= "Header";
$csv .= $newline;
$csv .= $string_with_chinese_chars;
$csv .= $newline;

// Tried all the below ways but doesn't work.
// Method 2.1
print chr(255) . chr(254) . mb_convert_encoding($csv, 'UTF-16LE', 'UTF-8');

// Method 2.2
print chr(239) . chr(187) . chr(191) . $csv;

// Method 2.3
print chr(0xEF).chr(0xBB).chr(0xBF);
print $newline;
print $csv;


Подробнее здесь: https://stackoverflow.com/questions/404 ... oesnt-work
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»