Я делал программу, которая создает несколько CSV из CSV другого источника (закодировано в 'SJIS' / SHIFT-JIS).Вот процесс, в котором я их создаю:
- Создайте строку, которая будет содержать содержимое выходных CSV
- Заполните указанные строки их правильной информацией
- Кодирование строки в UTF-8 из SJIS с использованием кода mb_convert_encoding ():
$ contents2 = mb_convert_encoding ($ contents, "UTF-8", "SJIS"); Создатьzip-архив, используя предоставленные PHP библиотечные методы, и добавьте нужные файлы с соответствующими им строками, используя код addFromString ():
$ zipFileName = "output.zip";
$zip = new ZipArchive;
if ($zip->open($zipFileName, ZipArchive::CREATE) === TRUE){
$zip->addFromString('customer.csv', $contents2);
...do for the other files
$zip->close();
}
else{
echo 'Failed! File not created!';
}
- Запрос пользователяс диалоговым окном, чтобы сохранить файл в нужном месте.код: $ zipContents = file_get_contents ($ zipFileName);заголовок ('Content-Type: application / zip');заголовок («Content-Disposition: attachment; filename = inflow.zip»);заголовок ("Pragma: no-cache");заголовок («Истекает: 0»);echo $ zipContents;
Теперь вот моя проблема: файлы, которые я создал из zip-файла, кодируются в «UTF-8 без BOM», когда я открываю его в Notepad ++.Тем не менее, я требую, чтобы эти файлы были просто в формате "UTF-8".Программа инвентаризации, которую я использую для загрузки этих файлов, по независящим от меня причинам не будет отображать правильные символы для CSV, закодированных в «UTF-8 без спецификации».После того, как я вручную: открою файлы, перекодирую их как «UTF-8» и сохраню их, файлы, способные отображать правильные символы в этой программе инвентаризации.
Я прочитал множество статей, рассказывающих об обратном подходе к этой проблеме, где люди пытались сделать так, чтобы их файлы UTF-8 были закодированы без BOM.Однако моя ситуация - полная противоположность этому.Если в PHP есть простое решение, я бы очень хотел помочь!Спасибо за чтение !!