Я несколько дней застрял при экспорте 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
Экспорт PHP CSV UTF-8 со спецификацией не работает ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1736325424
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;
Подробнее здесь: [url]https://stackoverflow.com/questions/40447325/php-export-csv-utf-8-with-bom-doesnt-work[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия