Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das verstümmelte Problem von PHP fgetcsv

So lösen Sie das verstümmelte Problem von PHP fgetcsv

藏色散人
藏色散人Original
2020-07-27 10:06:083925Durchsuche

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.

So lösen Sie das verstümmelte Problem von PHP fgetcsv

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(&#39;return &#39;.iconv(&#39;gbk&#39;,&#39;utf-8&#39;,var_export($data,true)).&#39;;&#39;);

$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(&#39;zh_CN.gbk&#39;,&#39;zh_CN.gb2312&#39;,&#39;zh_CN.gb18030&#39;));

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!

Stellungnahme:
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