Heim > Artikel > Backend-Entwicklung > So lösen Sie das verstümmelte Problem von PHP fgetcsv
php fgetcsv ist verstümmelt, da die importierte CSV-Datei in der Ansi-Kodierung gespeichert ist. Die Lösung besteht darin, die der chinesischen Betriebssystemumgebung entsprechende Kodierung auf „gbk“ zu setzen, dh die Zeichenkodierung des Browsers manuell zu ändern „gbk“ reicht aus.
Empfohlen: „PHP-Tutorial“
php verwendet fgetcsv zum Lesen von CSV-Dateien und löst das Problem Methode für verstümmelte Zeichen
Im Allgemeinen sind verstümmelte Zeichen in PHP hauptsächlich auf Codierungsprobleme zurückzuführen. Hier analysieren wir die Ursachen und Lösungen für verstümmelte Zeichen, wenn fgetcsv CSV-Dateien liest.
Das Beispiel lautet wie folgt:
Der Code lautet wie folgt:
function get_csv_contents( $file_target ){ $handle = fopen( $file_target, 'r'); while ($data = fgetcsv($handle, 1000, ",")) { $num = count($data); echo "<p> $num fields in line $row: <br>n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c]. "<br>n";; /*echo getUTFString($data[$c])*/ } } fclose($handle); }
Die importierte CSV-Datei wird in der entsprechenden Ansi-Kodierung gespeichert Eine davon sollte die GBK-Kodierung sein. Durch manuelles Ändern der Browser-Zeichenkodierung in GBK sind die verstümmelten Zeichen verschwunden und die folgenden Anpassungen wurden vorgenommen.
Der Code lautet wie folgt:
$data = eval('return '.iconv('gbk','utf-8',var_export($data,true)).';');
$data ist das Array, das in die Codierung konvertiert werden muss.
Ergänzung: LINUX FGETCSV liest GBK-Daten mit verstümmelten Zeichen
Wenn das Linux-System die Standardeinstellungen verwendet, wird die GBK-CSV-Formatdatei bei der Verarbeitung auf dem Linux-Server verstümmelt angezeigt Charaktere.
Die Lösung ist:
Verwenden Sie die Funktion setlocale, um Umgebungsvariablen festzulegen. Um beispielsweise die regionalen Einstellungen mit gb festzulegen, können Sie die folgende Anweisung vor fgetcsv verwenden.
Der Code lautet wie folgt:
setlocale(LC_ALL,array('zh_CN.gbk','zh_CN.gb2312','zh_CN.gb18030'));
Welche Locales werden konkret verwendet? Mit dem Linux-Befehl locale -a können Sie überprüfen, welche
das System unterstützt.Das obige ist der detaillierte Inhalt vonSo lösen Sie das verstümmelte Problem von PHP fgetcsv. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!