616 Stimmen

Ist es möglich, Excel zu zwingen, UTF-8 CSV-Dateien automatisch zu erkennen?

Ich entwickle einen Teil einer Anwendung, der für den Export einiger Daten in CSV-Dateien verantwortlich ist. Die Anwendung verwendet immer UTF-8 aufgrund ihrer mehrsprachigen Natur auf allen Ebenen. Aber das Öffnen solcher CSV-Dateien (die z.B. Diakritika, kyrillische Buchstaben, griechische Buchstaben enthalten) in Excel führt nicht zu den erwarteten Ergebnissen, es wird etwas wie „/¤, –/¶ angezeigt. Und ich weiß nicht, wie ich Excel dazu bringen kann zu verstehen, dass die geöffnete CSV-Datei in UTF-8 kodiert ist. Ich habe auch versucht, UTF-8 BOM EF BB BF anzugeben, aber Excel ignoriert das.

Gibt es einen Workaround?

P.S. Welche Tools könnten sich möglicherweise so verhalten wie Excel?


UPDATE

Ich muss sagen, dass ich die Community mit der Formulierung der Frage verwirrt habe. Als ich diese Frage gestellt habe, habe ich nach einem Weg gefragt, eine UTF-8 CSV-Datei in Excel ohne Probleme für einen Benutzer, auf eine fließende und transparente Weise zu öffnen. Allerdings habe ich eine falsche Formulierung verwendet und nach einer automatischen Lösung gefragt. Das ist sehr verwirrend und steht im Widerspruch zur VBA-Makroautomatisierung. Es gibt zwei Antworten auf diese Frage, die ich am meisten schätze: die allererste Antwort von Alex, die ich akzeptiert habe; und die zweite von Mark, die etwas später erschienen ist. Aus usability-Sicht schien Excel einen Mangel an benutzerfreundlichem UTF-8-CSV-Support zu haben, daher halte ich beide Antworten für korrekt, und ich habe Alex' Antwort zuerst akzeptiert, weil sie wirklich feststellte, dass Excel das nicht transparent konnte. Das ist das, was ich hier mit automatisch verwechselt habe. Marks Antwort fördert einen komplizierteren Weg für fortgeschrittenere Benutzer, um das erwartete Ergebnis zu erzielen. Beide Antworten sind großartig, aber Alex' Antwort passt etwas besser zu meiner nicht klar spezifizierten Frage.


UPDATE 2

Fünf Monate nach der letzten Bearbeitung habe ich festgestellt, dass die Antwort von Alex aus irgendeinem Grund verschwunden ist. Ich hoffe wirklich, dass es kein technisches Problem war und ich hoffe, dass es keine weitere Diskussion darüber gibt, welche Antwort jetzt besser ist. Deshalb akzeptiere ich Marks Antwort als die beste.

1 Stimmen

Kannst du tabellengetrennte Dateien verwenden? Wenn ja, hast du vielleicht mehr Glück.

11 Stimmen

Office 2010+: beste funktioniert: UTF-16LE mit BOM und \t als Trennzeichen. Funktioniert in englischen und nicht englischen Excel-Einstellungen. Kann Strg-S drücken, ohne das Dateiformat auszuwählen, usw. Wird Unicode-Zeichen beibehalten.

0 Stimmen

@Duncan ganz ehrlich, ich bin verwirrt und es ist "schwierig zu beurteilen". Ich habe alex's Antwort vor mehr als 2 Jahren akzeptiert (beide am 14. Mai) und dann hat Mark geantwortet und einen trickreichen Workaround vorgeschlagen (den ich tatsächlich nicht überprüft habe), der überraschenderweise mehr Punkte bei meiner Frage erzielt hat, die überraschenderweise auch populär wurde. Wir haben schon vor langer Zeit den Excel-Support in meinem Projekt abgelehnt, und ich möchte alex's Reputation nicht schmälern, weil Excel anscheinend, und wahrscheinlich immer noch (bitte korrigiere mich, wenn ich falsch liege), CSV falsch behandelt. Es ist schwierig zu sagen, tut mir leid.

25voto

Ixtlilton Punkte 311

Hatte die gleichen Probleme mit PHP-generierten CSV-Dateien. Excel hat das BOM ignoriert, wenn der Separator am Anfang des Inhalts definiert wurde über "sep=,\n" (aber natürlich nach dem BOM).

Also das Hinzufügen eines BOM ("\xEF\xBB\xBF") am Anfang des Inhalts und das Setzen des Semikolons als Separator über fputcsv($fh, $data_array, ";"); löst das Problem.

0 Stimmen

Beste Antwort für mich, danke!

21voto

Sie können die .csv-Datei in UTF-8 mit BOM über Notepad++ konvertieren:

  1. Öffnen Sie die Datei in Notepad++.
  2. Gehen Sie zum Menü Kodierung``In UTF-8-BOM konvertieren.
  3. Gehen Sie zum Menü Datei``Speichern.
  4. Schließen Sie Notepad++.
  5. Öffnen Sie die Datei in Excel .

Einwandfrei funktioniert in Microsoft Excel 2013 (15.0.5093.1000) MSO (15.0.5101.1000) 64-Bit von Microsoft Office Professional Plus 2013 auf Windows 8.1 mit Zeichensatz für nicht-Unicode-Programme auf "Deutsch (Deutschland)" eingestellt.

1 Stimmen

Habe das gemacht, was du gesagt hast, hat überhaupt nicht funktioniert. Konvertierung/Kodierung, Einstellung von Zeichencodierungen, hat in meinem Fall nichts funktioniert. Datei in Google Sheets importieren, als CSV herunterladen, hat einwandfrei funktioniert. Dein Willkommen aus dem Jahr 2045

4 Stimmen

Ich musste es mit Encoding -> in UTF-8-BOM Excel-Version 2016 konvertieren

1 Stimmen

Es hat gut funktioniert, nur musste ich mit UTF-8 BOM speichern. Endlich eine Möglichkeit, das Problem zu umgehen.

18voto

Aki Punkte 251

Alte Frage aber verdammt, die einfachste Lösung ist:

  1. Öffne die CSV-Datei in Notepad
  2. Speichern unter -> die richtige Codierung auswählen
  3. Öffne die neue Datei

1 Stimmen

Welche Excel-Version verwenden Sie?

1 Stimmen

Genial, funktioniert einfach und löst das Problem (zumindest für mich)

1 Stimmen

Nein, denn das Problem besteht darin, dass Excel die .csv-Datei als CSV-Datei öffnen soll. Ich meine, ich habe einen Prozess, bei dem ich CSV-Dateien generiere. Der Benutzer müsste dann nur die Dateien öffnen. Hier ist er/sie jedoch dazu verpflichtet, mehr zu tun als das.

14voto

Steve Jessop Punkte 264569

Ich hatte in der Vergangenheit das gleiche Problem (wie man Dateien erstellt, die Excel lesen kann, und auch andere Tools lesen können). Ich habe TSV anstelle von CSV verwendet, aber das gleiche Problem mit den Encodings ist aufgetreten.

Ich konnte keine Möglichkeit finden, Excel automatisch UTF-8 erkennen zu lassen, und ich war nicht bereit/in der Lage, den Verbrauchern der Dateien komplizierte Anweisungen zu geben, wie sie geöffnet werden sollen. Also habe ich sie stattdessen als UTF-16le (mit einem BOM) codiert anstelle von UTF-8. Doppelt so groß, aber Excel kann das Encoding erkennen. Und sie komprimieren gut, sodass die Größe selten (aber leider nicht nie) wichtig ist.

0 Stimmen

Es ist eine alte Frage, aber ich bin froh, dass die Leute immer noch antworten. Danke. :)

1 Stimmen

@LyubomyrShaydariv: Da ich diese Frage beantwortet habe, hat mir ein Kollege gesagt, dass das neueste Excel UTF-8 CSV-Dateien identifiziert, vorausgesetzt, sie haben ein anfängliches BOM. In ein paar Jahren, wenn alle auf der Welt (oder zumindest alle, denen wir die Dateien liefern) auf dieser Version von Excel oder besser sind, könnte ich meine Codierung ändern :-)

0 Stimmen

Seltsam, bei mir funktioniert es nicht. Ersetzt die Zeichen durch chinesische Symbole... (sie sollten Hebräisch sein)

11voto

Nestor Urquiza Punkte 2581

Wie ich auf http://thinkinginsoftware.blogspot.com/2017/12/correctly-generate-csv-that-excel-can.html gepostet habe:

Sagen Sie dem Software-Entwickler, der für die Generierung der CSV zuständig ist, dass er es korrigieren soll. Als schnelle Lösung können Sie gsed verwenden, um das UTF-8 BOM am Anfang des Strings einzufügen:

gsed -i '1s/^\(\xef\xbb\xbf\)\?/\xef\xbb\xbf/' file.csv

Dieser Befehl fügt das UTF-4 BOM ein, wenn es nicht vorhanden ist. Daher handelt es sich um einen idempotenten Befehl. Nun sollten Sie in der Lage sein, die Datei zu doppelklicken und sie in Excel zu öffnen.

0 Stimmen

Vielen Dank, das hat das Problem behoben. Ich habe die CSV-Datei einfach mit ';' getrennt in UTF-BOM in Notepad++ konvertiert und jetzt wird sie korrekt in Excel geöffnet.

0 Stimmen

Genau das, was gebraucht wurde! Hier ist ein Hinweis dazu, wie man dies in PHP umsetzen kann stackoverflow.com/questions/25686191/…

0 Stimmen

Dies ist der Workaround für Excel, das UTF-Zeichen in CSV-Dateien nicht erkennen konnte. Diese Korrektur behebt also das Excel-Problem.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X