Wie nutze ich deutsche Umlaute richtig in PhP – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self Wie nutze ich deutsche Umlaute richtig in PhP Wed, 17 Apr 19 18:40:55 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746970#m1746970 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746970#m1746970 <p>Hallo alle Zusammen, habe folgende Frage kann mir vielleicht jemand erklären wie ich Umlaute richtig in PHP anzeigen lassen kann. Ich finde hier im WIKI und im Internet keine Lösungen welche ich verstehe. Deswegen bitte ich euch um Hilfe! Dankeschön schon mal im Voraus!</p> Wie nutze ich deutsche Umlaute richtig in PhP Wed, 17 Apr 19 18:48:46 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746971#m1746971 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746971#m1746971 <p>Tach!</p> <blockquote> <p>habe folgende Frage kann mir vielleicht jemand erklären wie ich Umlaute richtig in PHP anzeigen lassen kann. Ich finde hier im WIKI und im Internet keine Lösungen welche ich verstehe.</p> </blockquote> <p>Das ist kein einfaches Ausführen eines einzelnen Befehls oder so. Du musst die gesamte Verarbeitungskette korrekt einstellen. Da das nicht in wenigen Worten erläutert ist, gibts im Wiki die Artikel zur <a href="https://wiki.selfhtml.org/wiki/Zeichencodierung" rel="nofollow noopener noreferrer">Zeichenkodierung</a>. Du solltest da schon etwas konkreter nachfragen, wenn du etwas nicht verstehst.</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 06:11:14 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747216#m1747216 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747216#m1747216 <p>Und da wäre noch <a href="http://php.net/default-mimetype" rel="noopener noreferrer">default_mimetype in php.ini</a> zur gefälligen Beachtung. MFG</p> Wie nutze ich deutsche Umlaute richtig in PhP Wed, 17 Apr 19 19:10:45 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746972#m1746972 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746972#m1746972 <p>Hallo, danke schon mal für deine Hilfestellung zur Zeichenkodierung. Für mich bleibt aber immer noch das Problem das ich nicht weiß wie ich dem PhP Code sage das er eine Ä oder Ö oder ß anzeigen soll. Ich muss das irgendwie im Head definieren wenn ich das Richtig verstanden habe. Oder kann man das auch anders Lösen? Ich bin für jede Hilfe Dankbar.</p> Wie nutze ich deutsche Umlaute richtig in PhP Wed, 17 Apr 19 20:24:40 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746973#m1746973 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746973#m1746973 <p>Ausgegeben (STDOUT) wird immer die Bytesequenz. Also wenn Du <code>echo 'äöüß'</code> notierst und die Datei wo das drinsteht utf-8-kodiert ist, wird die Bytesequenz ausgegeben. Und wenn das der Brower kriegt, wäre das mit dem header <code>Content-Type: text/html; charset=utf-8</code> bekanntzugeben. Letzteres machst Du jedoch nicht mit PHP sondern stellst das in der Serverkonfiguration (.htaccess) ein. GG</p> Wie nutze ich deutsche Umlaute richtig in PhP Wed, 17 Apr 19 20:30:18 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746974#m1746974 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746974#m1746974 <p>Tach!</p> <blockquote> <p>Für mich bleibt aber immer noch das Problem das ich nicht weiß wie ich dem PhP Code sage das er eine Ä oder Ö oder ß anzeigen soll.</p> </blockquote> <p>Der PHP-Code zeigt gar nichts an. Aber wie bei allen anderen Zeichen auch, muss der Empfänger wissen, welche Bytes, die bei ihm ankommen, auf welche Weise zu interpretieren sind.</p> <blockquote> <p>Ich muss das irgendwie im Head definieren wenn ich das Richtig verstanden habe.</p> </blockquote> <p>Da es mehrere Arten der Kodierung gibt, musst du dem Empfänger mitteilen, welche Kodierung du verwendet hast. Und nicht nur das, du musst selbstverständlich diese Kodierung auch tatsächlich verwenden. "20€" auf einen Briefumschlag zu schreiben reicht ja auch nicht, wenn das Geld nicht drin liegt.</p> <p>Du musst deinem Editor sagen, dass er die Code-Dateien als UTF-8 speichern soll. Dann kodiert der alle Zeichen, auch die Umlaute entsprechend. Wenn dein Code nun etwas ausgibt, das in ihm als Stringliteral vorliegt, und du dem Empfänger mitgeteilt hast, dass UTF-8 zu erwarten ist, dann sollte der kein Problem haben, die Bytes richtig zu interpretieren und die entsprechenden Zeichen daraus zu lesen. Möchtest du die String noch mit PHP bearbeiten, ist leider noch zu beachte, dass die einfachen Stringfunktionen nicht mit UTF-8 umgehen können. Aber die mb_*-Funktionen können das. Das macht die Sachlage auch nicht leichter.</p> <p>Wenn du Texte an anderen Orten ablegen möchtest, beispielsweise Datenbank, dann musst du auch mit dieser aushandeln, dass UTF-8 auf der Verbindung zu verwenden sei. Zusätzlich muss meist noch konfiguriert sein, dass die Felder UTF-8 speichern sollen.</p> <p>Und dieselbe Vorgehensweise muss man für jedes beteiligte System anwenden. Das System muss einerseits in der Lage sein, die Kodierung verarbeiten zu können, andererseits dem Kommunikationspartner mitteilen, welche Kodierung zu erwarten/verwenden sei. Das ist genauso komplex wie die Kommunikationsströme deiner Anwendung sind.</p> <blockquote> <p>Oder kann man das auch anders Lösen?</p> </blockquote> <p>Magie, aber die ist äußerst selten.</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 04:23:23 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746987#m1746987 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746987#m1746987 <p>Liebe(r) bjbenderTV,</p> <blockquote> <p>das ich nicht weiß wie ich dem PhP Code sage das er eine Ä oder Ö oder ß anzeigen soll.</p> </blockquote> <pre><code class="block language-php"><span class="token keyword">echo</span> <span class="token string double-quoted-string">"ÄÖß"</span><span class="token punctuation">;</span> </code></pre> <p>Wo ist das Problem?</p> <p>Liebe Grüße,</p> <p>Felix Riesterer.</p> Wie nutze ich deutsche Umlaute richtig in PhP Wed, 17 Apr 19 20:37:30 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746975#m1746975 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746975#m1746975 <p>Tach!</p> <blockquote> <p>Ausgegeben (STDOUT) wird immer die Bytesequenz.</p> </blockquote> <p>PHP ist nicht Perl im CGI-Modus. STDOUT interessiert hier nicht. Vielleicht geht das darüber, vielleicht aber auch über einen anderen Weg. Es spielt jedenfalls keine Rolle. <code>echo ...</code> findet den Weg von selbst.</p> <blockquote> <p>Und wenn das der Brower kriegt, wäre das mit dem header <code>Content-Type: text/html; charset=utf-8</code> bekanntzugeben. Letzteres machst Du jedoch nicht mit PHP sondern stellst das in der Serverkonfiguration (.htaccess) ein.</p> </blockquote> <p>Man <em>kann</em> das in der Serverkonfiguration einstellen, aber auch über PHPs header()-Funktion ausgeben. In der Serverkonfiguration hat das jedoch den Vorteil, dass es da generell angewendet wird und nicht je Ausgabe einzeln zu beachten ist.</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 09:22:38 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747031#m1747031 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747031#m1747031 <p>Danke für diese Erklärung das bringt mich ein ganzes Stück weiter!</p> Wie nutze ich deutsche Umlaute richtig in PhP Wed, 17 Apr 19 23:56:59 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746982#m1746982 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746982#m1746982 <p>@@dedlfix</p> <blockquote> <blockquote> <p>Und wenn das der Brower kriegt, wäre das mit dem header <code>Content-Type: text/html; charset=utf-8</code> bekanntzugeben. Letzteres machst Du jedoch nicht mit PHP sondern stellst das in der Serverkonfiguration (.htaccess) ein.</p> </blockquote> <p>Man <em>kann</em> das in der Serverkonfiguration einstellen,</p> </blockquote> <p>sollte das aber nicht tun <em>müssen</em>.</p> <p>Wenn der Server nicht schon so vorkonfiguriert ist, sollte man vielleicht den Hoster wechseln.</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“</em> —Kurt Weidemann </div> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 05:15:16 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746991#m1746991 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746991#m1746991 <p>Tach!</p> <blockquote> <blockquote> <p>Ausgegeben (STDOUT) wird immer die Bytesequenz.</p> </blockquote> <p>PHP ist nicht Perl im CGI-Modus. STDOUT interessiert hier nicht.</p> </blockquote> <p>Selbstverständlich interessiert das hier. PHP's echo und print geben Bytes auf STDOUT aber sowas von! Das war schon immmer so!</p> <blockquote> <p>Vielleicht geht das darüber, vielleicht aber auch über einen anderen Weg. Es spielt jedenfalls keine Rolle. <code>echo ...</code> findet den Weg von selbst.</p> </blockquote> <p>Von selbst geht da überhaupt nichts!!!! GGA</p> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 05:18:06 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746992#m1746992 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1746992#m1746992 <blockquote> <blockquote> <p>Man <em>kann</em> das in der Serverkonfiguration einstellen,</p> </blockquote> <p>sollte das aber nicht tun <em>müssen</em>.</p> </blockquote> <p>Schreib doch mal bitte über Deine Erfahrungen. Also warum sollte man das nicht tun müssen und wo bitte stellst Du Deine Kodierung ein?</p> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 06:30:39 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747000#m1747000 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747000#m1747000 <p>Tach!</p> <blockquote> <blockquote> <p>Man <em>kann</em> das in der Serverkonfiguration einstellen,</p> </blockquote> <p>sollte das aber nicht tun <em>müssen</em>.</p> <p>Wenn der Server nicht schon so vorkonfiguriert ist, sollte man vielleicht den Hoster wechseln.</p> </blockquote> <p>Unsinn. Woher soll der Hoster wissen, was die Anwendungen des Kunden für Kodierungen verwenden? Das beste ist, wenn da keine Vorgaben gemacht sind. Dann kann der Kunde verwenden, was er möchte. Zudem besteht ohne eine Vorgabe für den Content-Type-HTTP-Header die Möglichkeit, eine Kodierungsangabe auch erst in den Dokumenten anzugeben (bei den Typen, bei denen es geht). Diesen Wert nicht fest vorzubelegen, erspart eine Menge Ärger und Supportanfragen. "Ich hab doch <code><meta charset=...></code> in meinem HTML-Dokuemnt stehen, wieso nimmt der Browser das nicht?" Der Defaultwert Off für AddDefaultCharset sollte seitens des Hosters unangetastet bleiben.</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 06:35:43 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747001#m1747001 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747001#m1747001 <p>@@Felix Riesterer</p> <blockquote> <blockquote> <p>das ich nicht weiß wie ich dem PhP Code sage das er eine Ä oder Ö oder ß anzeigen soll.</p> </blockquote> <pre><code class="block language-php"><span class="token keyword">echo</span> <span class="token string double-quoted-string">"ÄÖß"</span><span class="token punctuation">;</span> </code></pre> <p>Wo ist das Problem?</p> </blockquote> <p>Außerhalb von PHP.</p> <p>Es lässt sich aber mit PHP …</p> <pre><code class="block bad language-php"><span class="token keyword">echo</span> <span class="token function">htmlentities</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"ÄÖß"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>*duckundweg*</p> <p>LLAP </p> <p>PS: <a href="https://www.w3.org/International/questions/qa-escapes.de#not" rel="nofollow noopener noreferrer">Nicht machen</a>, Kinder. Wirklich nicht.</p> <div class="signature">-- <br> <em>„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“</em> —Kurt Weidemann </div> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 06:50:00 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747007#m1747007 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747007#m1747007 <p>Tach!</p> <blockquote> <blockquote> <blockquote> <p>Ausgegeben (STDOUT) wird immer die Bytesequenz.</p> </blockquote> <p>PHP ist nicht Perl im CGI-Modus. STDOUT interessiert hier nicht.</p> </blockquote> <p>Selbstverständlich interessiert das hier. PHP's echo und print geben Bytes auf STDOUT aber sowas von! Das war schon immmer so!</p> </blockquote> <p>Das ist zumindest falsch, wenn PHP als Modul im Apachen läuft. Falls man gezielt etwas in die Ausgabekanäle leiten möchte, muss man da den <a href="https://www.php.net/manual/en/wrappers.php.php" rel="nofollow noopener noreferrer">Wrapper</a> php://output nehmen, weil php://stdout nicht im Outut Buffer landet, der für die Response verwendet wird, sondern zum stdout des Apachen geleitet wird, was dessen Console ist, oder verworfen wird, wenn der wie üblich im Hintergrund läuft.</p> <blockquote> <blockquote> <p>Vielleicht geht das darüber, vielleicht aber auch über einen anderen Weg. Es spielt jedenfalls keine Rolle. <code>echo ...</code> findet den Weg von selbst.</p> </blockquote> <p>Von selbst geht da überhaupt nichts!!!!</p> </blockquote> <p>Natürlich nicht - rein technisch betrachtet. Aber der PHP-Verwender muss dafür nichts tun oder wissen, weil PHP das bereits situationsgerecht richtig weitergibt. Es bleibt dabei, stdout ist für den PHP-Verwender außer in wenigen Ausnahmen irrelevant (oder sogar falsch).</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 06:37:21 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747003#m1747003 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747003#m1747003 <p>@@dedlfix</p> <blockquote> <p>Unsinn. Woher soll der Hoster wissen, was die Anwendungen des Kunden für Kodierungen verwenden?</p> </blockquote> <p>Der Hoster kann davon ausgehen, dass der Kunde UTF-8 verwenden will. Weil alles andere Unsinn ist. Wir haben 2019.</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“</em> —Kurt Weidemann </div> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 06:55:13 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747009#m1747009 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747009#m1747009 <p>Tach!</p> <blockquote> <blockquote> <p>Unsinn. Woher soll der Hoster wissen, was die Anwendungen des Kunden für Kodierungen verwenden?</p> </blockquote> <p>Der Hoster kann davon ausgehen, dass der Kunde UTF-8 verwenden will. Weil alles andere Unsinn ist. Wir haben 2019.</p> </blockquote> <p>Das hat nichts damit zu tun, welche Kodierung sinnvoll ist oder nicht. Der Hoster ist jedenfalls kein Durchsetzungsorgan.</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 06:59:39 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747010#m1747010 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747010#m1747010 <p>I/O ist grundsätzlich byteorientiert! Denn die Kodierung spielt nur programmintern eine Rolle, etwa bei Stringoperationen. Wenn Texte jedoch nach draußen gehen (STDOUT, Dateien, Sockets..) ist die Kodierung immer abzuschalten.</p> Wie nutze ich deutsche Umlaute richtig in PhP Mon, 22 Apr 19 20:10:26 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747213#m1747213 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747213#m1747213 <p>@@dedlfix</p> <blockquote> <blockquote> <p>Der Hoster kann davon ausgehen, dass der Kunde UTF-8 verwenden will. Weil alles andere Unsinn ist. Wir haben 2019.</p> </blockquote> <p>Das hat nichts damit zu tun, welche Kodierung sinnvoll ist oder nicht.</p> </blockquote> <p>Aber natürlich hat das damit zu tun. Der Hoster sollte sinnvolle Voreinstellungen wählen – für die Zeichencodierung wäre das UTF-8.</p> <blockquote> <p>Der Hoster ist jedenfalls kein Durchsetzungsorgan.</p> </blockquote> <p>Es geht auch nicht darum, Voreinstellungen nicht überschreibbar zu machen.</p> <p>Und schon gar nicht geht es darum, Einstellungen von bestehenden Projekten zu ändern.</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“</em> —Kurt Weidemann </div> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 07:17:49 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747014#m1747014 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747014#m1747014 <p>Tach!</p> <blockquote> <p>I/O ist grundsätzlich byteorientiert! Denn die Kodierung spielt nur programmintern eine Rolle, etwa bei Stringoperationen. Wenn Texte jedoch nach draußen gehen (STDOUT, Dateien, Sockets..) ist die Kodierung immer abzuschalten.</p> </blockquote> <p>Wo besteht jetzt der Zusammenhang zum vorher gesagten? Außerdem ist das schon wieder Perl-spezifisch. PHP kennt kein Ausschalten der Kodierung.</p> <p>Die Philosophie von PHP ist hier grundsätzlich eine andere. Es arbeitet nämlich bereits im Kern byteorientiert. Multibyte-Kodierungen werden nur partiell unterstützt. Auch dafür muss man nicht irgendwas ein- und ausschalten. Der Datentyp String bleibt weiterhin byteorientiert. Die richtige Behandlung der Kodierung ist Aufgabe der jeweiligen Funktionen. Außer dass man den Namen der Kodierung als Parameter übergibt, hat man als Anwender keinen weiteren Einfluss oder etwas explizit zu tun.</p> <p>Die Byteorientierung war bereits seit Anfang an so und wird auch noch solange bleiben, bis PHP endlich Multibyteunterstützung vollständig eingebaut bekommt. Perl und die dortigen Mechanismen spielen (derzeit) jedenfalls keine Rolle für PHP.</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 08:45:33 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747026#m1747026 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747026#m1747026 <p>Hallo dedlfix,</p> <blockquote> <p>bis PHP endlich Multibyteunterstützung vollständig eingebaut bekommt.</p> </blockquote> <p>Meinst Du, das bekommen sie ohne breaking change hin? Entweder müssten sie die Standard-Stringfunktionen automatisch mb-fähig machen, oder von der internen byte-Orientierung auf UTF-16 wechseln, wie C# oder Java.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - clusi </div> Wie nutze ich deutsche Umlaute richtig in PhP Thu, 18 Apr 19 09:21:13 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747030#m1747030 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747030#m1747030 <p>Tach!</p> <blockquote> <blockquote> <p>bis PHP endlich Multibyteunterstützung vollständig eingebaut bekommt.</p> </blockquote> <p>Meinst Du, das bekommen sie ohne breaking change hin?</p> </blockquote> <p>Ich habe keine Ahnung, wie sie das bewerkstelligen wollen oder werden. PHP läuft bei mir nur noch unter ferner liefen, so dass ich da keinen Einblick in die Planungen oder die Innereien nehme. Aber dass es ohne Breaking Change zu realisieren wäre, kann ich mir nicht vorstellen, sonst wär das schon längst erledigt. Geplant war das ja bereits vor langer Zeit für Version 6.</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 08:01:43 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747231#m1747231 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747231#m1747231 <p>Für I/O braucht man kein Multibyte-Unterstützung. Die Kodierung spielt nur programmintern eine Rolle wenn z.B. Stringoperationen anzuwenden sind. Bei Ein~ und Ausgabe jedoch ist die Kodierung grundsätzlich abzuschalten. Beim Übertragen Richtung Datenbanken übrigens auch, wenn das nicht beachtet wird, gibt es Zeichensalat.</p> <p>Im Übrigen ist auch MySQL in Sachen UTf-8 noch nicht fertig. Da gibt es auch Probleme wenn Zeichen mit 4 und mehr Bytes kodiert zu Speichern sind. Aber auch diese Zeichen lassen sich problemlos speichen wenn die Kodierung ausgeschaltet wird. MFG</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 05:38:41 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747214#m1747214 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747214#m1747214 <p>Tach!</p> <blockquote> <p>Es geht auch nicht darum, Voreinstellungen nicht überschreibbar zu machen.</p> <p>Und schon gar nicht geht es darum, Einstellungen von bestehenden Projekten zu ändern.</p> </blockquote> <p>Letzteres würdest du aber tun, wenn du eine solche Vorgabe machst, weil du damit die Vorgaben in den Dateien wirkungslos machst (beispielsweise meta charset in HTML). Es bringt keine Punkte, einen Wert voreinzustellen, von dem du nicht weißt, ob der Kunde auch diese Kodierung verwendet. Wir predigen immer, dass die Angabe und die tatsächlich verwendete Kodierung übereinstimmen muss. Das ist schließlich Voraussetzung, damit es zu keinen Fehlern beim Anzeigen kommt. Macht hier der Hoster eine Vorgabe, von der er nicht weiß, ob sie zutrifft, erzeugt er potentiell Probleme. Lässt er sie stattdessen weg, hat das am Ende auch keinen Nachteil. Schlimmstenfalls finden die Browser keinerlei Angabe und raten. Das Ergebnis dürfte immer noch besser sein, als eine falsche Angabe (zuzüglich wegfallende Fehlersuche und Supportaufwand).</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 06:05:02 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747215#m1747215 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747215#m1747215 <p>hi</p> <blockquote> <p>Es geht auch nicht darum, Voreinstellungen nicht überschreibbar zu machen.</p> </blockquote> <p>Wahrscheinlich hast Du noch nie mit der FileAPI gearbeitet. Denn da ist die Voreinstellung UTF-8 und das heißt z.B. daß anhängliche Dateinamen ungefragt zu UTF-8 konvertiert werden wenn sie in einer anderen Kodierung vorliegen.</p> <p>Und diese Voreinstellung ist nicht veränderbar. Man muss es halt nur wissen. MFG</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 06:16:25 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747217#m1747217 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747217#m1747217 <p>@@dedlfix</p> <blockquote> <blockquote> <p>Und schon gar nicht geht es darum, Einstellungen von bestehenden Projekten zu ändern.</p> </blockquote> <p>Letzteres würdest du aber tun, wenn du eine solche Vorgabe machst</p> </blockquote> <p>Wie sollte man das tun, wenn man für <em>neue</em> Projekte UTF-8 als Grundeinstellung wählt?</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“</em> —Kurt Weidemann </div> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 07:20:36 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747223#m1747223 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747223#m1747223 <p>Tach!</p> <blockquote> <p>Und da wäre noch <a href="http://php.net/default-mimetype" rel="noopener noreferrer">default_mimetype in php.ini</a> zur gefälligen Beachtung.</p> </blockquote> <p>Was genau soll man da beachten? Der Default-Wert ist <code>text/html</code>. Falls man nicht andere Dokumenttypen durch PHP erzeugen lassen möchte, ist das doch genau der passende Wert, oder nicht?</p> <p>Meintest du vielleicht die genau darunter stehende Direktive default_charset? Wenn ja, dann ist das einerm aber nicht der einzige der beachtenswerten Werte im komplexen Gebilde einer Webanwendung.</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 06:37:18 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747218#m1747218 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747218#m1747218 <p>Tach!</p> <blockquote> <blockquote> <blockquote> <p>Und schon gar nicht geht es darum, Einstellungen von bestehenden Projekten zu ändern.</p> </blockquote> <p>Letzteres würdest du aber tun, wenn du eine solche Vorgabe machst</p> </blockquote> <p>Wie sollte man das tun, wenn man für <em>neue</em> Projekte UTF-8 als Grundeinstellung wählt?</p> </blockquote> <p>Woher soll der Hoster wissen, ob der Kunde das Hosting-Angebot für ein neues oder ein altes Projekt verwenden möchte? Aber ob neu oder alt ist überhaupt nicht das Kriterium, sondern ob die Vorgabe zur <em>verwendeten</em> Kodierung passt oder nicht. Auf das, was der Kunde verwendet hat, hat der Hoster mit einem gesetzten Default-Wert keinerlei Einfluss. Der kann aber Probleme schaffen, die durch das Weglassen nicht entstehen.</p> <p>Erklär doch mal, was du für Vorteile darin siehst, eine Vorgabe zu machen, von der du nicht weißt, ob sie letztlich passt oder nicht. Und was für Nachteile siehst du, wenn der Hoster keine Voreinstellung konfiguriert?</p> <p>dedlfix.</p> Einstellung Content-Type Tue, 23 Apr 19 07:46:39 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747230#m1747230 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747230#m1747230 <p>Tach!</p> <blockquote> <blockquote> <p>Und da wäre noch <a href="http://php.net/default-mimetype" rel="noopener noreferrer">default_mimetype in php.ini</a> zur gefälligen Beachtung.</p> </blockquote> <p>Was genau soll man da beachten? Der Default-Wert ist <code>text/html</code>.</p> </blockquote> <p>Der Content-Type hat schon immer einen Parameter <code>Charset</code>. Und eben das alles zusammen stellt man in der php.ini ein. Beispiel: <code>Content-Type: text/html; Charset=UTF-8</code></p> <p>Bei meinem Provider z.B. kann man dies in einem dedizierten Backend einstellen. Was mich hier in diesem Thread mal wieder verwundert: <strong>Nicht einer hat auf die php.ini hingewiesen!</strong></p> <p>MFG</p> <p>PS: Aber eigentlich wundert mich das nicht.</p> Einstellung Content-Type Tue, 23 Apr 19 08:04:35 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747232#m1747232 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747232#m1747232 <p>Tach!</p> <blockquote> <blockquote> <blockquote> <p>Und da wäre noch <a href="http://php.net/default-mimetype" rel="noopener noreferrer">default_mimetype in php.ini</a> zur gefälligen Beachtung.</p> </blockquote> <p>Was genau soll man da beachten? Der Default-Wert ist <code>text/html</code>.</p> </blockquote> <p>Der Content-Type hat schon immer einen Parameter <code>Charset</code>. Und eben das alles zusammen stellt man in der php.ini ein. Beispiel: <code>Content-Type: text/html; Charset=UTF-8</code></p> </blockquote> <p>Für die Charset-Angabe ist default_charset zuständig und nicht default_mimetype. Eine Charset-Angabe bei default_mimetype unterzubringen bewirkt, dass der Wert von default_charset ebenfalls angehängt wird, was zu einer fehlerhaften Headerzeile führt.</p> <pre><code class="block language-php"><span class="token function">ini_set</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'default_mimetype'</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"text/html;charset=iso-8859-1"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">ini_set</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'default_charset'</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"iso-8859-2"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <pre><code class="block">Content-Type: text/html;charset=iso-8859-1; charset=iso-8859-2 </code></pre> <p>Zudem hat, wie an der verlinkten Stelle nachzulesen ist, default_charset noch ein paar andere Auswirkungen auf die Arbeitsweise von PHP. Und diese möchte man haben, weil es nichts bringt, lediglich nach außen hin eine bestimmte Kodierung zu deklarieren, sie aber nicht auch im Inneren zu verwenden.</p> <blockquote> <p>Was mich hier in diesem Thread mal wieder verwundert: <strong>Nicht einer hat auf die php.ini hingewiesen!</strong></p> </blockquote> <p>Ich habe auf die ausführliche Erörterung des Themas im Wiki hingewiesen. Da steht zwar nichts konkretes zu PHP, aber es steht zumindest geschrieben, wie das System insgesamt funktioniert. PHP einzustellen ist nur ein kleiner Teil vom ganzen.</p> <blockquote> <p>PS: Aber eigentlich wundert mich das nicht.</p> </blockquote> <p>Mich wundert es auch nicht, eine fachlich inkorrekte Antwort in deinem Posting zu finden.</p> <p>dedlfix.</p> Einstellung Content-Type Tue, 23 Apr 19 08:16:44 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747236#m1747236 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747236#m1747236 <p>@@pl</p> <blockquote> <p>Was mich hier in diesem Thread mal wieder verwundert: <strong>Nicht einer hat auf die php.ini hingewiesen!</strong></p> <p>PS: Aber eigentlich wundert mich das nicht.</p> </blockquote> <p><a href="https://forum.selfhtml.org/self/2017/dec/24/nachdenkliches-zur-bom/1710713#m1710713" rel="noopener noreferrer">Na zum Glück haben wir ja dich</a> und deine <a href="https://forum.selfhtml.org/self/2018/dec/13/the-character-encoding-is-not-specified-in-the-http-header/1738548#m1738548" rel="noopener noreferrer">Fachkompetenz</a>.</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“</em> —Kurt Weidemann </div> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 08:14:28 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747235#m1747235 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747235#m1747235 <p>Tach!</p> <blockquote> <p>Für I/O braucht man kein Multibyte-Unterstützung. Die Kodierung spielt nur programmintern eine Rolle wenn z.B. Stringoperationen anzuwenden sind. Bei Ein~ und Ausgabe jedoch ist die Kodierung grundsätzlich abzuschalten.</p> </blockquote> <p>Thema ist PHP. Wie schaltet man da die Kodierung aus?</p> <blockquote> <p>Beim Übertragen Richtung Datenbanken übrigens auch, wenn das nicht beachtet wird, gibt es Zeichensalat.</p> </blockquote> <p>Unsinn. Da ist nichts auszuschalten, sondern mit dem DBMS konkret auszuhandeln, welche Kodierung zu verwenden ist. Das DBMS muss nicht nur Byte-Salat bekommen, sondern es muss die Bedeutung des Inhalts kennen, damit es Stringverarbeitung wie Vergleichen und Sortieren korrekt ausführen kann.</p> <blockquote> <p>Im Übrigen ist auch MySQL in Sachen UTf-8 noch nicht fertig. Da gibt es auch Probleme wenn Zeichen mit 4 und mehr Bytes kodiert zu Speichern sind.</p> </blockquote> <p>Unicode definiert Zeichen bis U+10FFFF, und das ist problemlos als UTF-8 mit 4 Byte darstellbar. MySQL kann zugegebenermaßen mit der Kodierungsangabe "utf8" nur 2-Byte-Zeichen verarbeiten, aber "utf8mb4" existiert ebenfalls für die volle Schönheit bis U+10FFFF.</p> <blockquote> <p>Aber auch diese Zeichen lassen sich problemlos speichen wenn die Kodierung ausgeschaltet wird.</p> </blockquote> <p>Dann sind es keine Zeichen mehr, sondern Byte-Salat. Natürlich gibt es beim einfachen Speichern keine Probleme. Nur Stringverarbeitung kann man dann nicht mehr im DBMS ausführen lassen.</p> <p>dedlfix.</p> Einstellung Content-Type; Charset in php.ini Tue, 23 Apr 19 08:07:57 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747233#m1747233 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747233#m1747233 <p>Genau! Man muss sich halt einfach mal richtig damit befassen!</p> <pre><code class="block">; PHP's built-in default is text/html ; http://php.net/default-mimetype default_mimetype = "text/html" ; PHP's default character set is set to empty. ; http://php.net/default-charset default_charset = "UTF-8" </code></pre> <p>in php.ini wäre zu setzen, das gibt dann zusammen <code>Content-Type: text/html; Charset=UTF-8</code> und phpinfo zeigt das auch!</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 08:51:28 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747237#m1747237 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747237#m1747237 <p>Die Verbindung von PHP nach MySQL ist ein Socket. Sockets verhalten sich ganz genauso wie Filehandles und das heißt auch, daß Sockets gar keine Kodierung kennen. Nur wissen das eben viele PHP Programmierer gar nicht. Genausowenig wie um die Tatsache, daß print und echo auf STDOUT ausgeben. Das ist alles I/O, Ein~ und Ausgabe und da gibt die Bytesemantic. Das war schon immer so und das wird auch immer so bleiben.</p> <p>Was die Verbindung zu DB betrifft: Die Kodierung wird allenfalls mit übermittelt, ansonsten werden da einfach nur Bytes übertragen. Nimm einen Sniffer wie Wireshark und guck Dir das Payload an was in Richtung MySQL rausgeht bzw. zurückkommt. MFG</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 10:35:10 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747245#m1747245 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747245#m1747245 <p>Lieber dedlfix,</p> <blockquote> <p>Das DBMS muss nicht nur Byte-Salat bekommen, sondern es muss die Bedeutung des Inhalts kennen, damit es Stringverarbeitung wie Vergleichen und Sortieren korrekt ausführen kann.</p> </blockquote> <p>also das mit dem Sortieren von Strings ist so eine Sache. Natürlich kann das DBMS anhand der Kodierung unterscheiden, welche Bytes welchen Character ergeben. Aber für das Sortieren nach Kriterien der deutschen Sprache, insbesondere was die Umlaute und ß angeht, muss man noch immer eigene Lösungen schreiben.</p> <p>Liebe Grüße,</p> <p>Felix Riesterer.</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 09:00:38 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747238#m1747238 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747238#m1747238 <p>Tach!</p> <blockquote> <p>Die Verbindung von PHP nach MySQL ist ein Socket.</p> </blockquote> <p>Die Verbindung zwischen PHP und MySQL erfolgt über die MySQL-Client-Api, die Bestandteil von PHP ist. Welchen Weg die API-Funktionen nehmen, um letzlich mit dem Server zu kommunizieren, ist für PHP-Verwender nicht weiter relevant. Dass letztlich irgenwer irgendwelche Bytes übertragen muss, hat auch keinen Einfluss darauf, dass dem DBMS mitgeteilt werden muss, welche Kodierung diesem Bytestrom zugrundeliegt, damit es korrekt arbeiten kann.</p> <blockquote> <p>Was die Verbindung zu DB betrifft: Die Kodierung wird allenfalls mit übermittelt, ansonsten werden da einfach nur Bytes übertragen. Nimm einen Sniffer wie Wireshark und guck Dir das Payload an was in Richtung MySQL rausgeht bzw. zurückkommt.</p> </blockquote> <p>Richtig, aber mit der konkreten Übertragung hat der PHP-Verwender nichts am Hut. Man verwendet einfach die gegebenen mysqli-/PDO-Funktionen - und zwar mit Strings. Eine Empfehlung, in irgendeinen Byte-Modus zu wechseln, ist unangebracht, weil man sowas nicht tun muss. Es sei denn, man übernimmt selbst die Kommunikation auf Socket-Ebene und umgeht die eingebaute MySQL-Client-API. Aber wozu?</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 09:37:34 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747242#m1747242 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747242#m1747242 <p>Also ich hab mir das jetzt mal mit Wireshark angeschaut. Die API setzt das für die Übertragung um auf das <code>MySQL Protocol</code> was über den Port 3306 abgewickelt wird. Das legt fest in welchen Feldern die Kodierung zu übertragen ist, also die Kodierung welcher der Client beabsichtigt. Die Daten selbst jedoch werden unkodiert übertragen, also die Bytes, wie auch sonst.</p> <p>Das ist im Prinzip auch nicht anders wie bei HTTP: Die Daten sind Bytes, die Kodierung ist im Header angegeben. Auf dem Socketlayer selbst gibt es keine Kodierung, in Dateien ja auch nicht.</p> <p>Und selbstverständlich sollten sich auch PHP Programmierer mal mit solchen grundsätzlichen Dingen befassen!</p> <blockquote> <p>Es sei denn, man übernimmt selbst die Kommunikation auf Socket-Ebene und umgeht die eingebaute MySQL-Client-API. Aber wozu?</p> </blockquote> <p>Warum nicht!? Dabei kann man nur Lernen!!!</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 09:42:55 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747243#m1747243 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747243#m1747243 <p>Tach!</p> <blockquote> <p>Also ich hab mir das jetzt mal mit Wireshark angeschaut. Die API setzt das für die Übertragung um auf das <code>MySQL Protocol</code> was über den Port 3306 abgewickelt wird. Das legt fest in welchen Feldern die Kodierung zu übertragen ist, also die Kodierung welcher der Client beabsichtigt. Die Daten selbst jedoch werden unkodiert übertragen, also die Bytes, wie auch sonst.</p> </blockquote> <p>Was verstehst du unter unkodiert? Zeichen liegen in der Physik immer als irgendwelche Bytes kodiert vor, gemäß ASCII, ISO-8859-1, UTF-8 … Was genau sollen unkodierte Daten sein?</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 10:58:54 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747246#m1747246 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747246#m1747246 <p>Tach!</p> <blockquote> <blockquote> <p>Das DBMS muss nicht nur Byte-Salat bekommen, sondern es muss die Bedeutung des Inhalts kennen, damit es Stringverarbeitung wie Vergleichen und Sortieren korrekt ausführen kann.</p> </blockquote> <p>also das mit dem Sortieren von Strings ist so eine Sache. Natürlich kann das DBMS anhand der Kodierung unterscheiden, welche Bytes welchen Character ergeben. Aber für das Sortieren nach Kriterien der deutschen Sprache, insbesondere was die Umlaute und ß angeht, muss man noch immer eigene Lösungen schreiben.</p> </blockquote> <p>Grundvoraussetzung, damit Verarbeitung nach Zeichen stattfinden kann, ist die Kenntnis der Kodierung. Die Regeln zur Sortierung, was in welcher Reihenfolge kommt und welche Zeichen vielleicht gleichwertig sind, werden von der Collation festgelegt. Beides geht Hand in Hand, eine Collation ist immer an eine Zeichenkodierung gebunden.</p> <p>Was die deutsche Sortierung angeht, die beide Varianten Wörterbuch und Telefonbuch werden unterstützt von den Collations <code>…_unicode_ci</code> beziehungsweise <code>…_german2_ci</code>.</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 11:34:12 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747250#m1747250 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747250#m1747250 <p>Abgeshen davon daß charset (utf8) und collation (utf8_general_ci) richtig eingestellt sein müssen, auch in PHP sollte ein <a href="https://www.google.com/search?q=php+mysql+set+names+utf8" rel="nofollow noopener noreferrer">SET NAMES UTF8</a> möglich sein damit MySQL-Stingfunktionen funktionieren.</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 11:50:15 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747253#m1747253 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747253#m1747253 <p>Tach!</p> <blockquote> <p>Abgeshen davon daß charset (utf8) und collation (utf8_general_ci) richtig eingestellt sein müssen,</p> </blockquote> <p>Ja, und zwar bei den betroffenen Feldern. Das reicht aber schon, solange die Daten im DBMS korrekt eingetragen wurden.</p> <blockquote> <p>auch in PHP sollte ein <a href="https://www.google.com/search?q=php+mysql+set+names+utf8" rel="nofollow noopener noreferrer">SET NAMES UTF8</a> möglich sein damit MySQL-Stingfunktionen funktionieren.</p> </blockquote> <p>SET NAMES kann man als Statement losschicken. Aber zum einen beeinflusst das nicht die interne Arbeitsweise von MySQL, sondern dient lediglich dazu, die für den Transport von und zum Client zu verwendende Kodierung einzustellen.</p> <p>Zum anderen ist es besser, die Zeichenkodierung über die vorhandene Funktion mysqli_set_charset() oder (objektorientiert mysqli::set_charset()) einzustellen. Damit weiß nun auch die Client-API, was für eine Kodierung genommen wird. Sendet man SET NAMES als Statement, wird das von der Client-API nur durchgereicht aber nicht von ihr in den Funktionen, die sie selbst ohne Serverbeteiligung ausführen kann, berücksichtigt.</p> <p>Auch für PDO braucht man kein SET NAMES, da gibt man <code>charset=...</code> als Teil des DSN beim Erstellen des PDO-Objekts an.</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 12:33:00 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747261#m1747261 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747261#m1747261 <p>hi</p> <blockquote> <p>Auch für PDO braucht man kein SET NAMES, da gibt man <code>charset=...</code> als Teil des DSN beim Erstellen des PDO-Objekts an.</p> </blockquote> <p>Hat bei mir NULL Effekt. PHPv 5.3.0</p> <p>Mit Perl hingegen</p> <pre><code class="block language-perl"><span class="token variable">$dbh</span><span class="token operator">-></span><span class="token keyword">do</span><span class="token punctuation">(</span>q<span class="token punctuation">(</span>insert into stings <span class="token punctuation">(</span>sting<span class="token punctuation">)</span> values<span class="token punctuation">(</span><span class="token operator">?</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token string">"äöüß"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">my</span> <span class="token variable">$h</span> <span class="token operator">=</span> <span class="token variable">$dbh</span><span class="token operator">-></span>selectrow_hashref<span class="token punctuation">(</span><span class="token string">"SELECT upper(sting) as sting FROM stings"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">print</span> <span class="token variable">$h</span><span class="token operator">-></span><span class="token punctuation">{</span>sting<span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token comment"># ÄÖÜß</span> </code></pre> <p>funktioniert das einwandfrei. MFG</p> <p>PS: array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')</p> <p>kennt meine PHP Version noch nicht.</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 12:36:56 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747262#m1747262 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747262#m1747262 <p>Tach!</p> <blockquote> <blockquote> <p>Auch für PDO braucht man kein SET NAMES, da gibt man <code>charset=...</code> als Teil des DSN beim Erstellen des PDO-Objekts an.</p> </blockquote> <p>Hat bei mir NULL Effekt. PHPv 5.3.0</p> </blockquote> <p>Weil du eine 10 Jahre alte Museumsversion von PHP verwendest. Da gabs das noch nicht, wie die Dokumentation zum <a href="https://www.php.net/manual/en/ref.pdo-mysql.connection.php" rel="nofollow noopener noreferrer">PDO_MYSQL DSN</a> verrät.</p> <p>dedlfix.</p> Wie nutze ich deutsche Umlaute richtig in PhP Tue, 23 Apr 19 14:50:17 Z https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747269#m1747269 https://forum.selfhtml.org/self/2019/apr/17/wie-nutze-ich-deutsche-umlaute-richtig-in-php/1747269#m1747269 <blockquote> <p>PS: array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')</p> <p>kennt meine PHP Version noch nicht.</p> </blockquote> <p>Was ja auch nicht weiter tragisch ist. In Perl ist die Unicodeunterstützung bis heute in Bewegung, so konnte man bis Version 5.8 auf Umlaute kein Stringfunktionen anwenden und nicht einmal dann wenn die in einer ISO-8859-1-Kodierung vorlagen. Erst mit <code>Encode.pm</code> wurde das möglich, was seit 5.8 auch zum Core gehört.</p> <p>Trotzdem konnte man auch schon mit Perl v4 oder gar v3 seine Perl-Dateien in UTF-8-kodiert speichern und UTF-8 im Browser per print-Anweisung ausgeben. Und genau das, was man heute Bytesemantic nennt, gilt genauso auch für PHP, C und andere Programmiersprachen. MFG</p>