Ankündigung

Einklappen
Keine Ankündigung bisher.

VS Code Encoding beibehalten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • VS Code Encoding beibehalten

    Hi,

    ich finde gerade keine gute Anleitung, wie ich die in einem anderen Editor erstellten Vorlagen in ihrer Kodierung belasse, wenn ich sie mit VS Code öffne/speichere.

    VS Code öffnet erstmal alles mit der Unterstellung, es sei UTF-8. Obwohl es vorher als ISO-8859-1 bzw. ANSI gespeichert war.

    Wenn ich per VS Code das Encoding ändere, die Datei schließe und wieder öffne steht da wieder UTF-8?!


    Hat jemand eine Ahnung wie man in VS Code nachhaltig einzelne Dateien in ISO-8859-1 speichern kann?
    Es ist schon alles gesagt. Nur noch nicht von allen.


  • #2
    Gar nicht. Der Zeichensatz kann nur bei UTF-8 mithilfe der BOM mit gespeichert werden. (Was aber auch nicht immer ohne Probleme funktioniert. Siehe z.B. PHP... ) Bei anderen Zeichensätze musst du bei "Textdateien" immer den Zeichensatz kennen und explizit auswählen. (Viele Programme raten den Zeichensatz, oder warnen dich wenn du eine Datei mit scheinbar falschen Zeichensatz öffnest)

    Kommentar


    • #3
      Du kannst einer Text-Datei eigentlich nicht ansehen, in welchem Encoding sie gespeichert wurde.
      Was spräche denn dagegen alle Dateien in UTF-8 zu halten. Mach das nicht hintenraus alles einfacher?

      Edit: erc war schneller
      Standards - Best Practices - AwesomePHP - Guideline für WebApps

      Kommentar


      • #4
        Hm, das sind aber schlechte Nachrichten. Da muss ich wohl bei manchen Dateien einen anderen Editor verwenden.
        Es ist schon alles gesagt. Nur noch nicht von allen.

        Kommentar


        • #5
          Zitat von drsoong Beitrag anzeigen
          Hm, das sind aber schlechte Nachrichten. Da muss ich wohl bei manchen Dateien einen anderen Editor verwenden.
          Das hat mit dem Editor nichts zu tun. Kein Editor kann (ohne BOM) die richtige Kodierung erkennen. Höchstens raten. Wenn du 100% sicher gehn willst, musst du beim Editor selber die Kodierung einstellen. Und zwar egal ob VS Code, Notepad++ oder das klassische Windows Notepad, das macht keinen Unterschied.

          Kommentar


          • #6
            musst du beim Editor selber die Kodierung einstellen
            Wie beschrieben versuche ich das ja. Ich dachte, wenn ich das einmal einstelle, merkt sich VS Code das für die bestimmte einzelne Datei dann auch, so dass ich beim nächsten öffnen nicht Gefahr laufe, die Datei im falschen Encoding zu speichern.

            Was spräche denn dagegen alle Dateien in UTF-8 zu halten. Mach das nicht hintenraus alles einfacher?
            100% d'accord! Eigentlich spricht nur die Renitenz meiner Obrigkeit, das mal zu priorisieren, dagegen.
            Es ist schon alles gesagt. Nur noch nicht von allen.

            Kommentar


            • #7
              Zitat von drsoong Beitrag anzeigen
              Wie beschrieben versuche ich das ja. Ich dachte, wenn ich das einmal einstelle, merkt sich VS Code das für die bestimmte einzelne Datei dann auch, so dass ich beim nächsten öffnen nicht Gefahr laufe, die Datei im falschen Encoding zu speichern.
              Gibt es einen anderen Editor, der sich sowas merkt?

              In Visual Studio Code kannst du das Encoding entweder global oder pro Workspace einstellen. Reicht das nicht?

              Kommentar


              • #8
                Gibt es einen anderen Editor, der sich sowas merkt?
                Möglicherweise habe ich das bisher nur gedacht und Editoren wie RapidPHP und PHPDesigner haben das bisher nur immer richtig geraten.

                Wenn ich bei VS Code "Auto Guess Encoding" aktiviere, macht er es - soweit ich es jetzt mit 10 Dateien getestet habe - dann auch richtig. Das hilft ja schonmal, wenn das in der Regel funktioniert.

                Hm, weitere Tests zeigen aber auch, dass das seine Grenzen hat. Dies hier z. B. anderweitig als ANSI gespeichert, wird in VS Code als ISO-8859-2 erkannt.

                PHP-Code:
                 echo "Heiß und kalt.  Alles ist möglich. Die Dürre kommt bestimmt. Welche Straße geht nach Ränstadt.";
                      echo 
                "Crème brulèe"
                Und aus Crème brulèe wird Crčme brulče . Also Tschechisch.
                Es ist schon alles gesagt. Nur noch nicht von allen.

                Kommentar


                • #9
                  Zitat von drsoong Beitrag anzeigen
                  [...]so dass ich beim nächsten öffnen nicht Gefahr laufe, die Datei im falschen Encoding zu speichern.
                  Speichern ist in der Regel kein Problem. Wenn du dein "Crčme brulče" speicherst, steht da immer noch "Crème brulèe" in der Datei, wenn du sie mit dem richtigen Zeichensatz wieder öffnest. Es wird erst zu einem Problem, wenn du etwas hinzufügst mit Zeichen die sich in den Zeichensätzen unterscheiden. Dann kommt Datenmüll bei raus.
                  Wahrscheinlich wäre das aber gar nicht so verkehrt "Eigentlich spricht nur die Renitenz meiner Obrigkeit, das mal zu priorisieren, dagegen.". Man kann sich das Leben auch selbst schwer machen. Umstellung von Zeichensätzen ist jetzt auch nicht das Thema.

                  Kommentar


                  • #10
                    Zitat von drsoong Beitrag anzeigen
                    Hm, weitere Tests zeigen aber auch, dass das seine Grenzen hat. Dies hier z. B. anderweitig als ANSI gespeichert, wird in VS Code als ISO-8859-2 erkannt.
                    ANSI ein Sammelbegriff für alles mögliche, aber kein spezielles Encoding. "Als ANSI gespeichert" heißt also, kann ein zufälliges Encoding von hunderte unterschiedlichen sein.

                    Kann also ISO-8859-2 sein, oder auch nicht. Man weiß es nicht.

                    Zitat von drsoong Beitrag anzeigen
                    PHP-Code:
                     echo "Heiß und kalt. Alles ist möglich. Die Dürre kommt bestimmt. Welche Straße geht nach Ränstadt.";
                    echo 
                    "Crème brulèe"
                    Und aus Crème brulèe wird Crčme brulče . Also Tschechisch.
                    Wie bereits gesagt wurde, ein Encoding kann man ohne BOM nur erraten. Man kann mit Glück richtig raten, oder mit Pech falsch raten. Aber es bleibt nur eine Raterei. Solange du das nicht akzeptierst, wirst du dich nur im Kreis drehen.

                    Es kann heute richtig geraten werden, und morgen nach einem Software-Update schon wieder falsch, oder umgekehrt. Von daher würde ich mich nicht auf sowas verlassen, sondern das richtige Encoding immer manuell vorgeben.

                    Kommentar


                    • #11
                      Zitat von hellbringer Beitrag anzeigen
                      ANSI ein Sammelbegriff für alles mögliche, aber kein spezielles Encoding. "Als ANSI gespeichert" heißt also, kann ein zufälliges Encoding von hunderte unterschiedlichen sein.
                      Wenn von ANSI die Rede ist, ist das CP1252...

                      Kommentar


                      • #12
                        Zitat von erc Beitrag anzeigen
                        Wenn von ANSI die Rede ist, ist das CP1252...
                        Das hängt von der Betriebssystemeinstellung ab. Es muss nicht CP1252 sein.

                        Kommentar


                        • #13
                          Wenn ich raten darf, geht es eher um bereits vorhandenen Zeichensatz-Salat? In einer (auch mehreren) Firma hatte ich mal damit zu tun gehabt. Da ist das eigentliche Format ist zb. in UTF-8 abgelegt. Teile des Dokuments sind aber zum Beispiel in ASCII. Ursache kann sein das Daten aus der Datenbank kommen das kein UTF-8 beherrscht (MS-SQL) oder Code (wahrscheinlich) irgendwie per Copy&Paste rüber gewandert ist. Keine Ahnung wie man sowas eigentlich fertig bringt. Notepad++ konnte aber den Salat korrekt anzeigen, merken und verarbeiten. Darum war man in diesen Firmen auch auf den Notepad++ auch festgenagelt. Aber auch der Notepad++ ist nicht allmächtig. Die Suche zum Beispiel kann schon mal versagen und gesuchte Begriffe nicht finden, selbst wenn sie direkt vor der eigenen Nase liegen.

                          Deshalb... die Mühe auf sich nehmen und den Salat bereinigen. Zum Beispiel alles auf den Zeichensatzz, welchen die DB auch aufgesetzt ist. Bei MySQL wäre es vermutlich UTF-8, bei MS-SQL-Server wohl CP1252. Erst die neusten MS SQL Server (ab 2019) bieten langsam auch UTF-8 an... soweit ich das weiß.

                          Kommentar


                          • #14
                            Zitat von Goethe Beitrag anzeigen
                            Zum Beispiel alles auf den Zeichensatzz, welchen die DB auch aufgesetzt ist. Bei MySQL wäre es vermutlich UTF-8, bei MS-SQL-Server wohl CP1252. Erst die neusten MS SQL Server (ab 2019) bieten langsam auch UTF-8 an... soweit ich das weiß.
                            Bei MSSQL ist UTF-16 üblich. Aber das ist für den Programmierer irrelevant, da die Datenbankverbindung wie bei MySQL auf UTF-8 gesetzt werden kann.

                            https://docs.microsoft.com/en-us/sql...l-server-ver15

                            Und siehe da, bei PDO wird standardmäßig UTF-8 verwendet:
                            PDO::SQLSRV_ENCODING_UTF8 Data is in the UTF-8 encoding. This is the default encoding.
                            Also man muss sich schon wirklich Mühe geben, um damit Zeichensalat zu produzieren.

                            Kommentar


                            • #15
                              Zitat von hellbringer Beitrag anzeigen

                              Bei MSSQL ist UTF-16 üblich.
                              Ah, okay. Das weiß ich nicht. Ich kenne mich mit dem MS SQL Server nicht aus und hatte bisher auch nur einmal das Vergnügen damit in Kombination mit PHP zu arbeiten. Zeichensatz was definitiv nicht UTF und nach meinen Recherchen in der MS Doku stand nur das UTF-8 ab SQL 2019 langsam eingeführt wird. Also habe ich angenommen das MS-SQL UTF nicht kann, was mich aber auch sehr gewundert hat. Gut zu Wissen. Muss ich nun die Kombi MS-SQL und PHP nicht gänzlich verteufeln

                              Kommentar

                              Lädt...
                              X