UTF-8-Datei zeigt in Excel keine chinesischen Zeichen an

6586
Techidiot

Ich erstelle eine CSV-Datei mit UTF-8-Kodierung.

Es zeigt die chinesischen Zeichen richtig an, wenn ich es mit Notepad ++ öffne.

Die chinesischen Zeichen werden korrekt angezeigt, wenn ich sie mit dem Editor öffne.

Wenn ich es jedoch mit Excel öffne, sehe ich Müllwerte.

Wenn ich sie mit Notepad öffne und Strg + S drücke, die Datei schließe und in Excel wieder öffne, werden die Zeichen perfekt angezeigt.

Irgendwelche Hinweise, was geht hier?

Ich habe auch versucht, eine normale CSV-Datei mit der Codierung GB2312 zu erstellen. Ich verwendete dann den Unix-Befehl iconv, um die Datei von "GB2312" in "UTF-8" zu konvertieren.

Dieser Befehl entfernt alle chinesischen Zeichen und zeigt nur englische Zeichen. Das ist also keine Lösung.

Bitte vorschlagen.

Bearbeiten -

Es wird kein Garbage-Wert angezeigt, sondern die ANSI-Codierung. Warum wird standardmäßig die ANSI-Kodierung ausgewählt? Und warum nach dem Öffnen derselben Datei in Notepad / Notepad ++ sie mit UTF-8 geöffnet wird.

Auch, warum Control + s macht es richtig in Excel zu öffnen.

1
Für zukünftige Verwendung: Wenn Sie `iconv` verwenden, können Sie die Stückliste mit der Option` --add-signature 'hinzufügen. Arjan vor 8 Jahren 0

2 Antworten auf die Frage

3
Chris.C

In Linux wird UTF8 normalerweise ohne Stückliste gespeichert, da UTF8-Stückliste optional ist. Daher kann es bei Apps zu Problemen beim Erkennen der richtigen Kodierung kommen. Sie können versuchen, sie in UTF8 mit BOM zu speichern oder stattdessen UTF16 zu verwenden.

Das Problem für mich war - Ich habe keine Möglichkeit, Daten im UTF16-Format in meiner Programmiersprache hinzuzufügen. Nur UTF-8 ist erlaubt und das geht ohne Stückliste. Techidiot vor 8 Jahren 0
0
Techidiot

Ich wusste über die Stücklistenfolge mit UTF-8-Codierung Bescheid, wusste jedoch nicht, wie ich sie in meine Datei einfügen sollte.

Jetzt ist die Stücklistenfolge 0xEF, 0xBB, 0xBF, also habe ich versucht, dies als Klartext hinzuzufügen, aber es hat nicht funktioniert. Also habe ich die ASCII-Werte dieser CSV hinzugefügt und es funktioniert.

ASCII-Wert ist =

new.text = chr $ (239) & chr $ (187) & chr $ (191) | verkettet

Fügen Sie dies einfach als 1. Zeile hinzu und es funktioniert!

Danke, Chris, für deinen Vorschlag.