UTF-8 ohne Stückliste

180

Ich habe Javascript-Dateien, die in UTF-8 (ohne Stückliste) gespeichert werden müssen. Jedes Mal, wenn ich sie in Notepad ++ in das richtige Format konvertiere , werden sie beim Öffnen in Visual Studio mit Stückliste auf UTF-8 zurückgesetzt. Wie kann ich VS2010 davon abhalten?

Eine andere Frage: Ist UTF-8 ohne Signatur in Visual Studio dasselbe wie UTF-8 ohne Stückliste?

Kabaros
quelle
13
Eine mit (utf-8 ohne Stückliste) gespeicherte Datei wird auf (utf-8 mit Stückliste) zurückgesetzt. Dies ist das Problem
Kabaros
Die Lösung des Kabaros-Problems ist einfach: Speichern Sie die Datei einfach mit Visual Studio unter Verwendung von uft-8 ohne Stückliste. Ja, es ist möglich - wie Keavon bemerkte "UTF-8 ohne Unterschrift steht ganz unten auf der Liste." Es ist ziemlich seltsam, dass utf-8 mit Signatur am Anfang und utf-8 ohne Signatur fast am Ende ist, aber zumindest löst es dieses frustrierende Problem.
Cyriel

Antworten:

227

Stücklisten- oder Byte-Bestellzeichen sind manchmal ziemlich nervig. Visual Studio ändert die Datei nur, wenn Sie sie speichern (wie Hans sagte).

Und hier ist die Lösung für Ihr Problem: Wenn Sie eine Datei mit anderen Codierungen speichern möchten, wählen Sie Speichern unter und erweitern Sie die Schaltfläche Speichern im Dateidialog und wählen Sie "Mit Codierung speichern". Oder wenn Sie diese Einstellung dauerhaft entfernen möchten, öffnen Sie einfach das Menü Datei und wählen Sie "Erweiterte Speicheroptionen". Dort sollten Sie "UTF-8 ohne Signatur" auswählen (und das hat auch Ihre letzte Frage beantwortet :). Ja, "UTF-8 ohne Signatur" ist dasselbe wie ohne Stückliste.

Dave81
quelle
11
Ich habe mich gefragt, ob es eine Option gibt, die dies standardmäßig für alle Dateien aktiviert.
Mihai
3
Die Datei wurde ordnungsgemäß gespeichert, als ich "Mit Codierung speichern" ausgewählt habe. In meinem Menü "Datei" wird jedoch nicht "Erweiterte Speicheroptionen" angezeigt, unabhängig davon, welche Art von Datei ich im Editor geöffnet habe. Hm ....
Chris Jaynes
20
@ChrisJaynes Klicken Sie mit der rechten Maustaste auf die Menüleiste an einer offenen Stelle und klicken Sie dann auf Anpassen ... Befehle ... (*) Menüleiste: Datei ... [Befehl hinzufügen] ... fügen Sie die von mir eingegebenen "Erweiterten Speicheroptionen" hinzu es direkt über "Auswahl speichern"
Tracker1
4
Nun, ich habe nicht den Eintrag "UTF-8 ohne Signatur" ... was ist dann das Problem?
Marco Klein
14
Hinweis: UTF-8 ohne Signatur befindet sich ganz unten in der Liste.
Keavon
29

Jetzt mit Bildern.

  1. Gehe zu File-> Save As.

    Datei / Speichern unter

  2. Klicken Sie dann auf die Schaltfläche Speichern auf Dreieck und klicken Sie auf Save with Encoding....

    Mit Codierung speichern

  3. Klicken Sie auf OK, um die Datei zu überschreiben, und suchen UTF-8 Without signatureSie dann in der Liste der Codierungen nach -> Klicken Sie auf OK.

    UTF-8 Ohne Unterschrift

Hoffe das spart dir etwas Zeit.

Matas Vaitkevicius
quelle
26

Ich habe die Fix File Encoding- Erweiterung erstellt, die verhindert, dass Visual Studio 2010+ UTF-8-Dateien Stücklisten hinzufügt.

Sergey Vlasov
quelle
1
Danke für das Plugin! Es sollte eine andere Möglichkeit geben, Dateitypen anzugeben, als einen regulären Ausdruck in den Einstellungen zu verwenden, die mit den Dateisuffixen übereinstimmen. Außerdem wirkt das Plugin nur auf Dateien, wenn ich sie speichere. Wenn ich ein Javascript erstelle, hat es zunächst eine Stückliste (3 Bytes hinzugefügt).
Anders Lindén
6

Leider funktioniert dies nicht mit csproj-Dateien. Es gibt keine "Erweiterte Speicheroption", und obwohl Sie für eine CS-Datei die Option "UTF-8 ohne Signatur" festgelegt haben, werden CSG-Dateien weiterhin mit der Stückliste gespeichert. Wenn Sie VSS verwenden, werden weiterhin Projektdateien beanstandet.

Wray
quelle
Vielleicht sollten Sie von VSS zu SVN wechseln. Ich erinnere mich, dass ich ein Tool gesehen habe, mit dem Sie die Konvertierung durchführen können. SVN ist kostenlos und mit einem geringen Preis können Sie das visuelle SVN-Plugin in Ihr visuelles Studio einbinden und SVN direkt über die Benutzeroberfläche verwenden.
Dave81
7
"Vielleicht sollten Sie von VSS zu SVN wechseln." Was für ein Vorschlag ist das? Die meisten von uns, die an Unternehmenssoftware arbeiten, können ihr Quellcodeverwaltungssystem nicht auswählen. SVN hat eigene Probleme, was zur Schaffung von Git geführt hat, weil sie die Nase voll von SVN hatten.
Shiva
4

UTF-8 - "Speichern unter" (ohne Signatur) Standard - Anforderung, Standard für UTF ohne Signatur aufzunehmen

VS 2017 unterstützt nativ EditorConfig. Eine empfohlene Lösung besteht darin .editorconfig, Ihrer Codebasis eine Datei hinzuzufügen und festzulegen charset => utf-8. Sobald Sie eine Datei gespeichert haben, wird sie als UTF-8 ohne Stückliste gespeichert.

Dave Anderson
quelle
Ich fürchte, VS 2017 wird charsetin .editorconfig github.com/editorconfig/editorconfig-visualstudio/issues/…
BlazingFrog
2

Für vs2010 c ++ gibt es Probleme mit UTF8 ohne Stückliste, wenn Quelldateien Mehrbyte-Zeichen enthalten (z. B. Chinesisch).

Diese Zeichen werden ohne Stückliste nicht korrekt erkannt und führen zu einer fehlgeschlagenen Erfüllung.

Martin Wang
quelle
Da unter Windows ohne Stückliste davon ausgegangen wird, dass die Datei eine ANSI-Codierung aufweist, wird sie
beschädigt
2

Kürzlich habe ich dieses winzige Befehlszeilentool gefunden, das die Stückliste für beliebige UTF-8-codierte Dateien hinzufügt oder entfernt: UTF BOM Utils ( neuer Link bei github)

Kleiner Nachteil, Sie können nur den einfachen C ++ - Quellcode herunterladen. Sie müssen das Makefile erstellen ( z. B. mit CMake ) und selbst kompilieren. Auf dieser Seite werden keine Binärdateien bereitgestellt. Für einen Softwareentwickler sollte dies jedoch kein Problem sein.

Wernfried Domscheit
quelle
1

Selbst mit der Lösung von Dave81 hat Visual Studio 2015 Community meine Datei jedes Mal, wenn ich diese HTML-Datei speichere, auf UTF8-BOM zurückgesetzt.

Als ich diese HTML-Datei erstellt habe, habe ich mit der rechten Maustaste auf das Projekt geklickt und "Hinzufügen" ausgewählt und dann eine HTML-Datei hinzugefügt.

Standardmäßig enthält Visual Studio ein <meta charset="utf-8" />Tag in Ihrer HTML-Datei.

Durch einfaches Entfernen des Tags und anschließendes Anwenden der Lösung von Dave81 wurde das Problem dieses Mal behoben.

Es scheint, dass Visual Studio Ihre HTML-Datei analysiert und die Datei ohne Berücksichtigung des ursprünglichen Dateiformats (UTF-8 ohne Stückliste) in UTF8-BOM konvertiert, wenn es dieses Tag sieht.

Ich hätte direkt unter Dave81s Lösung einen Kommentar abgegeben, aber ich hatte nicht genug Punkte, um dies zu tun ...

Jonny
quelle
0

Gehen Sie für Visual Studio Code wie folgt vor:

  1. Wählen Sie unten rechts die aktuelle Codierung aus Geben Sie hier die Bildbeschreibung ein
  2. Wählen Sie unter Optionen die Option Mit Aufschließen speichern aus Geben Sie hier die Bildbeschreibung ein
  3. Wählen Sie unter Optionen die Option UTF-8 aus Geben Sie hier die Bildbeschreibung ein
Mahesh
quelle
VS und VS-Code sind sehr unterschiedlich. Diese Frage ist über VS
phuclv
obwohl die Frage für VS war und Sie für VScode geantwortet haben, was mein Problem gelöst hat und es daher positiv bewertet hat
Ashu
-2
UTF8Encoding utf8EmitBOM = new UTF8Encoding(false);
StreamWriter  sw = new StreamWriter(Path.Combine(sourcefilePath, fileName), false, utf8EmitBOM);

Dieser Code erstellt eine Datei in UTF-8 ohne Stückliste

Jugendra Singh
quelle
Die Frage
betrifft die