Text speichern UTF-8 betrifft auch Windows
Pete
- php
Hi,
ich nutze für Kurznotizen das ganz normale windowseigene Notepad.
Nun überraschte mich dieses mit einer Meldung ich sollte in einem anderen
Format speichern als Ansi(wieso eigentlich ansi dachte wäre ascii).
Das lag daran, weil einige polnische Zeichen mit drin waren.
Ok, dann speichere ich halt in UTF-8, aber ganz wohl ist mir nicht dabei.
1. Kann das auch mal ein Nachteil sein oder macht es Sinn immer alle .txt-Dateien als utf-8 zu speichern?
2. Wie sieht das bei PHP aus? Ich nutze oft textbasierende Dateien als DB. In welchem Format werden die dann standardmässig gespeichert also mit fopen/fwrite? Gibt es hier etwas zu beachten?
Ich muss zugeben, dass ich diese Formatierungsgeschichten nie wirklich durschaut habe. Ich weiss zwar das es an der Zahl der möglichen Zeichen liegt und dass ich ein htacces-Datei nur ascii mässig behandeln darf, aber wieso, weshalb, warum habe ich nie verstanden, weil es irgendwie keine lehrhafte Dummy-Lektüre zu diesem Thema gibt.
Pete
Ich habe jetzt mal ein wenig experimentiert. .txt Datei mit PHP geschrieben unter Voraussetzung accept-charset="UTF-8".
Dabei ist mir aufgefallen Notepad zeigt das problemlos richtig an.
Wordpad hingegen ist nicht in der Lage die Umlaute darzustellen.
Der Viewer von Total-Commander erkennt es nicht automatisch und muss manuell umegstellt werden, wobei die anderen Filterfunktionen des Viewers zb. "entferne Tags" damit auf der Strecke bleiben. Also scheint es wohl doch, dass UTF-8 doch gewisse Nachteile mit sich bringt?
Pete
Moin!
Ich habe jetzt mal ein wenig experimentiert. .txt Datei mit PHP geschrieben unter Voraussetzung accept-charset="UTF-8".
Dabei ist mir aufgefallen Notepad zeigt das problemlos richtig an.
Wordpad hingegen ist nicht in der Lage die Umlaute darzustellen.
Das liegt vor allem daran, dass bei Textdateien das Problem nicht gelöst werden kann, die verwendete Codierung in der Datei mitzuspeichern. Das ist übrigens kein Problem, was nur UTF-8 hat, dieselben Probleme treten auch auf, wenn der Editor normalerweise ISO-8859-1 annimmt, und er ohne Hinweis auf z.B. ISO-8859-2 trifft. Da viele Zeichen in den zwei Codierungen identisch sind, fällt das Problem nicht sofort auf, man muß schon auf Sonderzeichen treffen, die anders codiert sind, um zu sehen, dass dort nicht die erwarteten, sondern ganz andere Zeichen stehen.
Bei HTML-Dateien kann und sollte man unbedingt die verwendete Codierung in ein Meta-Element schreiben und (was höhere Priorität hat) auch als HTTP-Header mit ausgeben. Dann weiß jeder interessierte Leseprozess, was Sache ist.
Der Viewer von Total-Commander erkennt es nicht automatisch und muss manuell umegstellt werden, wobei die anderen Filterfunktionen des Viewers zb. "entferne Tags" damit auf der Strecke bleiben. Also scheint es wohl doch, dass UTF-8 doch gewisse Nachteile mit sich bringt?
UTF-8 bringt Nachteile, wenn man Software verwendet, die mit UTF-8 nicht umgehen kann. Diese Software wird aber aussterben und kann schon heute durch vernünftige Alternativen ersetzt werden. Insofern ist UTF-8 also kein Nachteil, sondern nur vorteilhaft.
- Sven Rautenberg
@@Pete:
Format speichern als Ansi(wieso eigentlich ansi dachte wäre ascii).
Nö, ASCII ist nur 7 Bit, also die Zeichen U+0000 bis U+007F (dezimal 0 bis 127). Das sog. ANSI ist Windows-1252 (bis auf den Bereich U+0080 bis U+009F identisch mit ISO 8859-1), 8 Bit, also das doppelte an Zeichen.
Das lag daran, weil einige polnische Zeichen mit drin waren.
Diese sind in Windows-1252 (ISO 8859-1) nicht enthalten.
Ok, dann speichere ich halt in UTF-8, aber ganz wohl ist mir nicht dabei.
Mir wäre bei so ziemlich jeder anderen Zeichencodierung unwohl.
- Kann das auch mal ein Nachteil sein oder macht es Sinn immer alle .txt-Dateien als utf-8 zu speichern?
Nein. (Es könnte ein Nachteil sein, das mit dem Windows-Notepad zu tun, da dieser stets mit BOM speichert. [QA-UTF8-BOM])
- Wie sieht das bei PHP aus? Ich nutze oft textbasierende Dateien als DB. In welchem Format werden die dann standardmässig gespeichert also mit fopen/fwrite? Gibt es hier etwas zu beachten?
Dass du die Daten richtig in die DB reinschreibst und rausliest (am besten die Daten in der DB auch in UTF-8 codieren). Dass du für String-Operationen nur Multibyte-Funktionen nutzt. Last, but not least, dass du die Zeichencodierung richtig angibst. [QA-CHANGING-ENCODING]
[…] weil es irgendwie keine lehrhafte Dummy-Lektüre zu diesem Thema gibt.
Ähm ... Zeichencodierung für Dummies: [QA-WHAT-IS-ENCODING]
Live long and prosper,
Gunnar