PHP generiert unter Mac eine CSV-Datei mit verstümmelten Zeichen

不言
Freigeben: 2023-03-24 18:26:02
Original
1946 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich PHP zum Generieren von verstümmeltem CSV-Code unter Mac vor. Jetzt kann ich ihn mit allen teilen, die ihn benötigen


<?php
     $file_name = date(&#39;Ymd&#39;, time()) . &#39;.csv&#39;;  //设置文件名
     header(&#39;Content-Type: application/vnd.ms-excel&#39;);
header(&#39;Content-Disposition: attachment;filename=&#39;.$file_name);
header(&#39;Cache-Control: max-age=0&#39;);
$fp = fopen(&#39;php://output&#39;, &#39;a&#39;);
$row = [
&#39;name&#39; => &#39;测试&#39;,
&#39;email&#39; => 111111,
&#39;mobile&#39; => 22222,
&#39;weixinid&#39; => &#39;微信号&#39;,
];
fwrite($fp,"\xEF\xBB\xBF");
fputcsv($fp, $row);
Nach dem Login kopieren


Lösung für das verstümmelte Problem der von PHP exportierten CSV-Datei



Bevor wir über diese Frage sprechen, sprechen wir zunächst darüber, was eine CSV-Datei ist. Komma-Trennwert (durch Kommas getrennter Wert) ist ebenfalls vorhanden. Es gibt Zwischendateien, die häufig für die Datenkonvertierung verwendet werden, z. B. zum Exportieren von Daten von MySQL nach CSV und zum Importieren von CSV in SqlServer. Verwenden Sie ein PHP-Skript unter Linux, um die Tabellendaten entsprechend den Bedingungen aus der MySQL-Datenbank in CSV zu exportieren. Verwenden Sie die UTF-8-Kodierung, um die CSV-Datei zu exportieren. Nach dem Öffnen wird das Chinesisch darin verstümmelt (CSV-Dateien unter Windows sind mit Microsoft Excel verknüpft). Standardmäßig wird Notepad++ verwendet oder Word wird normal geöffnet, aber das Layout ist unübersichtlich. Grund: BOM ist in Schwierigkeiten, Microsoft ist in Schwierigkeiten.

Was ist Stückliste? Byte Order Mark (Bit Order Mark) ist ebenfalls vorhanden.

Um Unicode-Dateien zu erkennen, empfiehlt Microsoft, dass alle Unicode-Dateien mit dem Zeichen ZERO WIDTH NOBREAK SPACE beginnen. Dies dient als „Signatur“ oder „Byte-Order-Markierung (BOM)“, um die in der Datei verwendete Codierung und Byte-Reihenfolge (Big-Endian oder Little-Endian) zu identifizieren. Die spezifische Entsprechung ist in der folgenden Tabelle aufgeführt.

Bytes-Codierungsform

00 00 FE FF UTF-32, big-endian
FF FE 00 00 UTF-32, little-endian
FE FF UTF-16, big-endian
FF FE UTF-16, little-endian
EF BB BF UTF-8


BOM wird in Unix-ähnlichen Systemen nicht verwendet, da dadurch bestehende ASCII-Syntaxkonventionen zerstört werden für Dateien.

Implementieren Sie den Code, wenn

Hinweis: Stellen Sie beim Schreiben der CSV-Datei sicher, dass der PHP-Quellcode utf-8 ist, keine Stückliste hat und gibt nichts aus.




Wenn Excel CSV liest, liest es den Dateikopf. Die Stückliste wird verwendet um die Kodierung zu identifizieren. Wenn der Dateiheader keine Stücklisteninformationen enthält, wird er standardmäßig gemäß der Unicode-Kodierung gelesen. (Diese Stückliste ist ein von Microsoft selbst definiertes Datei-Header-Protokoll. Wie der Name schon sagt, wird es im Datei-Header gespeichert. Der gespeicherte Inhalt ist die Information, die die Dateikodierung identifiziert.)

Die Plattform, die wir verwenden CSV generieren folgt nicht unbedingt dem BOM-Protokoll von Microsoft. Wenn eine nicht Unicode-codierte CSV-Datei (z. B. utf-8) ausgegeben wird und keine BOM-Informationen generiert werden, liest Excel automatisch entsprechend der Unicode-Codierung und verstümmelte Zeichen treten auf .

Nachdem ich das gemeistert habe, glaube ich, dass verstümmelte Zeichen uns nicht länger davon abhalten können, weiterzumachen: Öffnen Sie einfach die nicht-Unicode-codierte CSV-Datei mit einem Texteditor (Notepad++ wird empfohlen) und konvertieren Sie sie mit in die Codierungsform Stückliste (insbesondere Die Codierungsmethode ist beliebig), das Problem ist gelöst.

Verwandte Empfehlungen:

PHP generiert eine eindeutige RequestID-Klasse

Ein detailliertes Beispiel, wie PHP eine .csv-Suffixdateitabelle generiert


Das obige ist der detaillierte Inhalt vonPHP generiert unter Mac eine CSV-Datei mit verstümmelten Zeichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage