umlaut-problem
bert
- php
0 suit0 anna220 bert0 Der Martin
0 bert0 Gunnar Bittersmann
0 bert
1 Gunnar Bittersmann
hey,
ich habe ein Datenbank aus der ich einfach nur alle Wörter einer Spalte auslase und darstelle. Wenn mann mit der Maus ein Wort hovert, wird dieses in einem Input Textfeld gezeigt
Wenn ich jetzt in der DB Umlaute angebe, erscheinen im HTML Text wie auch im Input komische Fragezeichen. Wenn ich die Umlaute in der DB als ä etc. eintrage, erscheinen die Umlaute richtig im div, aber im Input wird ä etc angezeigt.
Gibt es eine universal-Lösung um Umlaute in MySQL DBs zu hinterlegen und später überall richtig anzuzeigen??
Danke und Gruß
Gibt es eine universal-Lösung um Umlaute in MySQL DBs zu hinterlegen und später überall richtig anzuzeigen??
Verwende überall dieselbe Zeichencodierung - nämlich sinnvollerweise UTF-8 und speichere Daten immer Kontextneutral. HTML-Entities haben in einer MySQL-Datenbank nix verloren. Ein Kontextwechsel hat nur bei Bedarf zu erfolgen.
Verwende überall dieselbe Zeichencodierung - nämlich sinnvollerweise UTF-8 und speichere Daten immer Kontextneutral.
Benutze UTF-8. Trotzdem werden die Zeichen komisch dargestellt. Habs jetzt mit str_replace() versucht, also die Umlaute aus MySQL nach Abfrage durch ü ersetzt. Im Div klappts. Im INPUT wird halt ü angezeigt... Wieso?
Wie geht das denn bei PHP mit dem Zeichensatz? Bei MySQL hab ich das schon auf UTF-8 gestellt. Bei HTML hab ich halt ganz normal den Doctype angegeben...
Hallo,
Wie geht das denn bei PHP mit dem Zeichensatz?
so wie überall sonst auch: Beim Speichern der Quellcodes die richtige Codierung wählen, den Server die richtige Codierung angeben lassen (Angabe im HTTP-Header), für den Notfall noch eine meta-Angabe ins Dokument setzen.
Bei MySQL hab ich das schon auf UTF-8 gestellt.
Was? Die Codierung der einzelnen Felder? Oder die Codierung der Kommunikation zwischen PHP und MySQL?
Bei HTML hab ich halt ganz normal den Doctype angegeben...
... der damit exakt gar nichts zu tun hat.
So long,
Martin
PS: Lass bitte das Bäumchen-Wechsel-Dich-Spielchen mit dem Nickname. Entscheide dich für *einen* Namen, und bleib dabei.
so wie überall sonst auch: Beim Speichern der Quellcodes die richtige Codierung wählen, den Server die richtige Codierung angeben lassen (Angabe im HTTP-Header), für den Notfall noch eine meta-Angabe ins Dokument setzen.
benutze notepad++ und finde keine angabe, die man irgendwie in utf8 ändern könnte
habe die .htacces bei xampp um folgende zeilen erweiter:
AddType 'text/php; charset=UTF-8' php
AddType 'text/html; charset=UTF-8' html
habe eine metaangabe im header gemacht:
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
gleiches ergebnis: es werden fragezeichen statt umlaute angezeigt
Was? Die Codierung der einzelnen Felder? Oder die Codierung der Kommunikation zwischen PHP und MySQL?
Bei HTML hab ich halt ganz normal den Doctype angegeben...
... der damit exakt gar nichts zu tun hat.
So long,
MartinPS: Lass bitte das Bäumchen-Wechsel-Dich-Spielchen mit dem Nickname. Entscheide dich für *einen* Namen, und bleib dabei.
@@bert:
nuqneH
habe die .htacces bei xampp um folgende zeilen erweiter:
AddType 'text/php; charset=UTF-8' php
Verwendest du im PHP 'header()
'?
gleiches ergebnis: es werden fragezeichen statt umlaute angezeigt
Wie wär’s denn mal, deine Seite zu verlinken?
Qapla'
PS: Bitte keine Fullquotes!
habe bei notepad++ auf utf 8 umstellen können. jetzt werden umlaute im text dur E4 F6 und FC angezeigt. Im Browser hat sich aber leider immernoch nichts geändert..
Verwendest du im PHP '
header()
'?
nein
Wie wär’s denn mal, deine Seite zu verlinken?
liegt auf internem apache..
PS: Bitte keine Fullquotes!
sorry, habs auch gemerkt als ich auf absenden geklickt hatte
Hallo,
habe bei notepad++ auf utf 8 umstellen können. jetzt werden umlaute im text dur E4 F6 und FC angezeigt.
dann ändert Notepad++ offensichtlich nicht die schon vorhandenen Codes im Text, sondern interpretiert sie nur als UTF-8. Denn was du da angibst, sind die Codes der Umlaute in ISO-8859-x, die in UTF-8 ungültig sind (ein einzelnes Byte mit dem Wert >0x7F gibt's in UTF-8 nicht). Du müsstest nun also die Umlaute von Hand korrigieren.
Ich bin aber der Ansicht, dass du noch nicht die richtige Lösung gefunden hast; eigentlich sollte Notepad++ in der Lage sein, die Umcodierung automatisch zu machen - eventuell beim "Save As", so wie der Windows-eigene Notepad?
Im Browser hat sich aber leider immernoch nichts geändert..
Natürlich nicht, das Dokument ist ja auch noch identisch.
Wie wär’s denn mal, deine Seite zu verlinken?
liegt auf internem apache..
Lässt sich ändern ...
So long,
Martin
dann ändert Notepad++ offensichtlich nicht die schon vorhandenen Codes im Text, sondern interpretiert sie nur als UTF-8. Denn was du da angibst, sind die Codes der Umlaute in ISO-8859-x, die in UTF-8 ungültig sind (ein einzelnes Byte mit dem Wert >0x7F gibt's in UTF-8 nicht). Du müsstest nun also die Umlaute von Hand korrigieren.
Ja, hab auf Format --> UTF-8 geklickt.
Gibt aber auch Konvertieren in UTF-8, dann bleiben die Umlaute erhalten.
Natürlich nicht, das Dokument ist ja auch noch identisch.
wieso das? Habs doch konvertiert und META ist auch drin. Woran kanns denn noch hängen?
Wie wär’s denn mal, deine Seite zu verlinken?
liegt auf internem apache..Lässt sich ändern ...
habe meinen neuen server erst gestern bestellt. Logindaten sind noch nicht eingetroffen (warum auch immer). wenn ich die hab kann ichs gerne hochladen..
PS: in der httpd.conf von xampp hab ich auch
AddDefaultCharset UTF-8
eingefügt.
Immernoch nichts :-(
Hallo,
Ja, hab auf Format --> UTF-8 geklickt.
Gibt aber auch Konvertieren in UTF-8, dann bleiben die Umlaute erhalten.
dann hättest du wohl genau *das* tun sollen.
Natürlich nicht, das Dokument ist ja auch noch identisch.
wieso das? Habs doch konvertiert und META ist auch drin. Woran kanns denn noch hängen?
Was nun? Hast du es konvertiert und neu gespeichert, oder nur mal als UTF-8 mit den beschriebenen Fehlern angesehen (also *nicht* umcodiert)?
Ciao,
Martin
Was nun? Hast du es konvertiert und neu gespeichert, oder nur mal als UTF-8 mit den beschriebenen Fehlern angesehen (also *nicht* umcodiert)?
habe es als ich es gefunden habe natürlich konvertiert und neu gespeichert. klappt trotzdem nicht
Ich bin aber der Ansicht, dass du noch nicht die richtige Lösung gefunden hast; eigentlich sollte Notepad++ in der Lage sein, die Umcodierung automatisch zu machen
Ja - es gibt die Möglichkeit nur das File anders zu interpretieren oder die Daten zu konvertieren.
Wie wär’s denn mal, deine Seite zu verlinken?
liegt auf internem apache..
Lässt sich ändern ...
So, habe jetzt meinen Zugang erhalten. Hier
Das komische:
Wenn ich Text im HTML festlege (erster Satz auf der Homepage), werden die Umlaute richtig angezeigt.
Das Wort "Textbücher" wird aus der MySQL Datenbank abgerufen. Hier ird das ü nicht richtig angezeigt.
Die Tabelle der Datenbank hat folgende Eigenschaften:
Zeichencodierung der Datei: utf8
Kollation utf8_general_ci (latin1_swedish_ci war Standard. Weiß jemand wieso?)
Die Felder der Tabelle haben ebenfalls Kollation utf8_general_ci.
Wieso wird der MySQL-abgefragte Teil falsch dargestellt??
Hallo,
So, habe jetzt meinen Zugang erhalten. Hier
so, da wird's doch gleich viel konkreter.
1. Dein Server macht *gar keine* Angabe zum Encoding:
Content-Type: text/html
2. Ersatzweise gilt also die Inforamtion aus der meta-Angabe im HTML:
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
Warum übrigens der Abschluss mit />? Schreibst du XHTML? Nichts deutet darauf hin.
3. Das HTML-Dokument enthält eine BOM (Byte Order Mark) am Anfang. Das kann
Probleme machen; speichere lieber als UTF-8 ohne BOM.
4. Der Textabschnitt "hä, dü schreibst döch kömisch" ist korrekt in UTF-8
codiert und wird daher auch richtig angezeigt.
5. Das darunterstehende Fragment "Textb?cher" enthält da, wo das "ü" sein
sollte, ein Byte mit dem Wert 0xFC. Das entspricht einem "ü" in ISO-8859-1,
ist aber für sich allein ungültig in UTF-8. Dieses Stück kommt also wohl
aus einer ISO-codierten Quelle.
Das Wort "Textbücher" wird aus der MySQL Datenbank abgerufen. Hier ird das ü nicht richtig angezeigt.
Die Tabelle der Datenbank hat folgende Eigenschaften:
Zeichencodierung der Datei: utf8
Kollation utf8_general_ci (latin1_swedish_ci war Standard. Weiß jemand wieso?)
Die Felder der Tabelle haben ebenfalls Kollation utf8_general_ci.
Ist der Text richtig in die Datenbank eingetragen? Und in welcher Codierung sprechen PHP und MySQL miteinander?
So long,
Martin
- Dein Server macht *gar keine* Angabe zum Encoding:
Content-Type: text/html
habe jetzt im root eine .htacces mit folgendem Inhalt:
AddDefaultCharset UTF-8
- Ersatzweise gilt also die Inforamtion aus der meta-Angabe im HTML:
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
Warum übrigens der Abschluss mit />? Schreibst du XHTML? Nichts deutet darauf hin.
kein xhtml. / entfernt
- Das HTML-Dokument enthält eine BOM (Byte Order Mark) am Anfang. Das kann
Probleme machen; speichere lieber als UTF-8 ohne BOM.
Keine BOM mehr drin.
- Das darunterstehende Fragment "Textb?cher" enthält da, wo das "ü" sein
sollte, ein Byte mit dem Wert 0xFC. Das entspricht einem "ü" in ISO-8859-1,
ist aber für sich allein ungültig in UTF-8. Dieses Stück kommt also wohl
aus einer ISO-codierten Quelle.
Wie gesagt: bei phpmyadmin steht bei der Tabelle und den SPalten alles auf utf8_general_ci
Ist der Text richtig in die Datenbank eingetragen?
also in phpmyadmin werden ü ö und ä ganz normal angezeigt. hab ich über insert eingetragen. weiß nicht genau worauf du hier hinaus willst.
Und in welcher Codierung sprechen PHP und MySQL miteinander?
wo wird das festgelegt / kann ich das nachschauen?
Danke für die Hilfe!
@@bert:
nuqneH
So, habe jetzt meinen Zugang erhalten. Hier
Mit der Firefox-Extension Live HTTP headers lässt sich ganz einfach herausfinden, dass sein Server im HTTP-Header angibt: "Content-Type: text/html". Keine Zeichencodierung. (Solltest du ändern.)
Deshalb wirkt die Angabe im Dokument <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
Dein Dokument ist unvollständig: keine http://de.selfhtml.org/html/allgemein/grundgeruest.htm#dokumenttyp@title=DOCTYPE-Angabe. Und du solltest dich entscheiden, ob du <http://de.selfhtml.org/html/xhtml/unterschiede.htm@title=HTML oder XHTML> schreiben willst.
Wenn man sich dein Dokument in einem Hex-Editor ansieht, sieht man:
(1) Am Anfang steht ein BOM. Sollte aber nicht.
(2) 'ä' wird durch die Byte-Sequenz C3 A4, 'ü' (in „dü“) durch C3 BC, 'ö' durch C3 B6 codiert. UTF-8 halt.
(3) Das 'ü' in „Textbücher“ wird durch das Byte FC codiert. Also nicht UTF-8. (In UTF-8 ist das Byte FC nicht erlaubt, deshalb erscheint '�'.)
Das Problem besteht also zwischen Auslesen des Textes aus der Datenbank und Einbau des Textes in dein HTML-Dokument.
Qapla'
Mit der Firefox-Extension Live HTTP headers lässt sich ganz einfach herausfinden, dass sein Server im HTTP-Header angibt: "Content-Type: text/html". Keine Zeichencodierung. (Solltest du ändern.)
in root liegt eine .htaccess mit Inhalt "AddDefaultCharset UTF-8"
Dein Dokument ist unvollständig: keine http://de.selfhtml.org/html/allgemein/grundgeruest.htm#dokumenttyp@title=DOCTYPE-Angabe.
Ist jetzt drin.
Und du solltest dich entscheiden, ob du <http://de.selfhtml.org/html/xhtml/unterschiede.htm@title=HTML oder XHTML> schreiben willst.
HTML
(1) Am Anfang steht ein BOM. Sollte aber nicht.
Ist raus.
Das Problem besteht also zwischen Auslesen des Textes aus der Datenbank und Einbau des Textes in dein HTML-Dokument.
Wie löse ich das Problem? In der Datenbank selbst sind die ä ö und ü ganz normal dargestellt (bei Zugriff über phpmyadmin).
Danke für die Hilfe!
Wie löse ich das Problem? In der Datenbank selbst sind die ä ö und ü ganz normal dargestellt (bei Zugriff über phpmyadmin).
Nun, da es sowohl in der DB richtig steht und auch PHP ansich umlaute richtig ausgiebt bleibt ja nur noch eins übrig oder? :) Das Zwischen PHP und Tabelle... damit mein ich die MySQL-Verbindung.
mach mal im PHP Code : show variables
und schau dir dann z.b. "character_set_connection", "collation_connection" an.
Im Prinzip muss jede "character" und "collation" Einstellung auf UTF-8 sein. Zu Server haben auch Datenbank, Tabelle und Feld je eine eigene Einstellung.
mit :
mysql_query("SET NAMES 'utf8'", $sqlconnection);
mysql_query("set character_set_client=utf8;", $sqlconnection);
mysql_query("set character_set_connection=utf8;", $sqlconnection);
mysql_query("set character_set_results=utf8;", $sqlconnection);
mysql_query("set character_set_server=utf8;", $sqlconnection);
mysql_query("set collation_connection=utf8_general_ci;", $sqlconnection);
mysql_query("set collation_server=utf8_general_ci;", $sqlconnection);
kann man Notfalls zum Testen nachhelfen.
mach mal im PHP Code : show variables
und schau dir dann z.b. "character_set_connection", "collation_connection" an.
Meinst du "var_dump(get_defined_vars());"? Da werden "character_set_connection", "collation_connection" nicht angezeigt.
mysql_query("SET NAMES 'utf8'", $sqlconnection);
mysql_query("set character_set_client=utf8;", $sqlconnection);
mysql_query("set character_set_connection=utf8;", $sqlconnection);
mysql_query("set character_set_results=utf8;", $sqlconnection);
mysql_query("set character_set_server=utf8;", $sqlconnection);
mysql_query("set collation_connection=utf8_general_ci;", $sqlconnection);
mysql_query("set collation_server=utf8_general_ci;", $sqlconnection);
was macht das $sqlconnection da hinten?
Habe folgende Datei geöffnet:
mysql_connect($db_adress, $db_user, $db_password);
mysql_select_db($db_db);
$query =mysql_query("SET NAMES 'utf8'")or die(mysql_error());
$query =mysql_query("set character_set_client=utf8;");
$query =mysql_query("set character_set_connection=utf8;");
$query =mysql_query("set character_set_results=utf8;");
$query =mysql_query("set character_set_server=utf8;");
$query =mysql_query("set collation_connection=utf8_general_ci;");
$query =mysql_query("set collation_server=utf8_general_ci;");
und keine error() Meldung bekommen. Also müsste es doch funktioniert haben, oder?
Zeigt aber immernoch keine Umlaute an.
Danke für die Hilfe!
PS: Meine Kenntnisse für MySQL-Befehle sind sehr überschaubar. Reicht gerade so zum abrufen, ändern und löschen von datensätzen. Daher weiß ich auch nichts mit dem $sqlconnection anzufangen.
PS: Meine Kenntnisse für MySQL-Befehle sind sehr überschaubar. Reicht gerade so zum abrufen, ändern und löschen von datensätzen. Daher weiß ich auch nichts mit dem $sqlconnection anzufangen.
Kein Problem, mysql_query() hat auch recht wenig mit MySQL zu tun.
resource mysql_query(string $query [,resource $link_identifier])
link_identifier
The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.
Hallo,
mach mal im PHP Code : show variables
und schau dir dann z.b. "character_set_connection", "collation_connection" an.
Meinst du "var_dump(get_defined_vars());"?
nein, da war der Hinweis "mach mal im PHP Code" wohl ausgesprochen irreführend. Es sollte natürlich heißen: Führe mal den SQL-Query aus (z.B. im PHPMyAdmin).
mysql_query("SET NAMES 'utf8'", $sqlconnection);
was macht das $sqlconnection da hinten?
PS: Meine Kenntnisse für MySQL-Befehle sind sehr überschaubar. Reicht gerade so zum abrufen, ändern und löschen von datensätzen. Daher weiß ich auch nichts mit dem $sqlconnection anzufangen.
Aber es sollte doch genügen, um mal die PHP-Funktion mysql_query() im Manual nachzuschlagen und festzustellen, dass man optional noch die zu verwendende SQL-Verbindung angeben kann, diese Angabe jedoch optional ist. Wenn sie weggelassen wird, nimmt PHP die letzte mit mysql_connect() geöffnete Verbindung.
Habe folgende Datei geöffnet:
mysql_connect($db_adress, $db_user, $db_password);
mysql_select_db($db_db);
$query =mysql_query("SET NAMES 'utf8'")or die(mysql_error());
$query =mysql_query("set character_set_client=utf8;");
$query =mysql_query("set character_set_connection=utf8;");
$query =mysql_query("set character_set_results=utf8;");
$query =mysql_query("set character_set_server=utf8;");
$query =mysql_query("set collation_connection=utf8_general_ci;");
$query =mysql_query("set collation_server=utf8_general_ci;");
> und keine error() Meldung bekommen. Also müsste es doch funktioniert haben, oder?
Du fragst die Fehler ja gar nicht ab, außer beim ersten Statement. Aber nehmen wir mal an, es wären wirklich keine Fehler aufgetreten ...
> Zeigt aber immernoch keine Umlaute an.
Kunststück. Was nützt es, wenn du in einem isolierten Testscript mal versuchsweise die Codierungen einstellst, in deinem eigentlichen Script aber alles unverändert lässt?
So long,
Martin
--
Er: Mit wem warst du gestern abend aus?
Sie: Du bist mal wieder eifersüchtig wie immer!
Er: Wer ist Immer?
mach mal im PHP Code : show variables
und schau dir dann z.b. "character_set_connection", "collation_connection" an.
Meinst du "var_dump(get_defined_vars());"?nein, da war der Hinweis "mach mal im PHP Code" wohl ausgesprochen irreführend. Es sollte natürlich heißen: Führe mal den SQL-Query aus (z.B. im PHPMyAdmin).
mein Fehler, natürlich sollte es heissen, das du in deinem PHP Script (um das es gehst einmal:
mysql_query("show variables", $sqlconnection);
mysql_query("SET NAMES 'utf8'", $sqlconnection);
was macht das $sqlconnection da hinten?
Aber es sollte doch genügen, um mal die PHP-Funktion mysql_query() im Manual nachzuschlagen und festzustellen, dass man optional noch die zu verwendende SQL-Verbindung angeben kann, diese Angabe jedoch optional ist. Wenn sie weggelassen wird, nimmt PHP die letzte mit mysql_connect() geöffnete Verbindung.
Der "Link" zu Verbindung mag bei einer unwichtig sein, jedoch geh ich da gern sicher, ich wies nie, wann ich mal eine zweite öffne.
Habe folgende Datei geöffnet:
mysql_connect($db_adress, $db_user, $db_password);
mysql_select_db($db_db);
$query =mysql_query("SET NAMES 'utf8'")or die(mysql_error());
> > Zeigt aber immernoch keine Umlaute an.
> Kunststück. Was nützt es, wenn du in einem isolierten Testscript mal versuchsweise die Codierungen einstellst, in deinem eigentlichen Script aber alles unverändert lässt?
Wie er schon schrieb, bringt das allein nichts. Du musst dies a) entweder in deinem Problemscript ausführen oder b) im Testscript Umlaute auslesen.
Diese "Einstellungen" gelten nur während der aktiven Verbindung.
Ich würde auch nicht einfach alle auf Verdacht ausführen, sondern wie schon geschrieben mit dem Mysql Befehl: "show variables;" einmal schauen was die Verbindung sagt. Jedoch bringt es herzlich wenig dies über phpMyAdmin auszulesen, da dieser eventuell schon zur Laufzeit daran rumgefummelt hat.
Wie er schon schrieb, bringt das allein nichts. Du musst dies a) entweder in deinem Problemscript ausführen oder b) im Testscript Umlaute auslesen.
Diese "Einstellungen" gelten nur während der aktiven Verbindung.
Dachte das wird dann dauerhaft umgestellt, habe daher nicht darauf geachtet, dass es vor dem Abruf der Umlaute steht. Wenn ich das mache, dann werden die Umlaute richtig angezeigt!!
mein Fehler, natürlich sollte es heissen, das du in deinem PHP Script (um das es gehst einmal:
mysql_query("show variables", $sqlconnection);
Wollte mir die Variablen ausgeben lassen, damit ich wie du schon sagst nicht immer auf gut Glück alle laufen lassen muss:
echo mysql_fetch_assoc(mysql_query("show variables"));
<--
array
-->
$eko = mysql_fetch_assoc(mysql_query("show variables"));
foreach($eko as $ekoo) { echo $ekoo."<br>"; }
<--
auto_increment_increment
1
-->
:-(
Hallo
mein Fehler, natürlich sollte es heissen, das du in deinem PHP Script (um das es gehst einmal:
mysql_query("show variables", $sqlconnection);Wollte mir die Variablen ausgeben lassen, damit ich wie du schon sagst nicht immer auf gut Glück alle laufen lassen muss:
echo mysql_fetch_assoc(mysql_query("show variables"));
<--
array
-->
Es wird eine Zeile mit mysql_fetch_assoc ausgegeben. Läuft also, wie gewollt.
$eko = mysql_fetch_assoc(mysql_query("show variables"));
Es wird eine Zeile von mysql_fetch_assoc an $eko übergeben. Läuft also, wie gewollt.
foreach($eko as $ekoo) { echo $ekoo."<br>"; }
<--
auto_increment_increment
1
-->
Es wird die *eine* übergebene Zeile in einer Schleife ausgegeben. Läuft also, wie gewollt.
:-(
Tja, wenn du mehrere Ergebinszeilen ausgeben willst, solltest du die auch alle durchlaufen. Da du typischerweise nicht weißt, um wieviele Ergebniszeilen es geht, machst du das in einer Schleife.
$eko = mysql_query("show variables");
while ($row = mysql_fetch_assoc($eko)) {
echo $row["..."].", ".$row["...."];
}
Tschö, Auge
Danke, so klappts.
Ergebnis:
--------------
character_set_client
latin1
character_set_connection
latin1
character_set_database
latin1
character_set_filesystem
binary
character_set_results
latin1
character_set_server
latin1
character_set_system
utf8
collation_connection
latin1_swedish_ci
collation_database
latin1_german2_ci
collation_server
latin1_german2_ci
-------------
Wenn ich character_set_results von latin1 auf utf8 stelle klappts ja, aber kann ich das ganze mit phpmyadmin auch irgendwie generell auf uft8 stellen? sonst muss ich ja jedes mal den beim connecten den befehl losschicken.
Wenn ich character_set_results von latin1 auf utf8 stelle klappts ja, aber kann ich das ganze mit phpmyadmin auch irgendwie generell auf uft8 stellen? sonst muss ich ja jedes mal den beim connecten den befehl losschicken.
Nun dacht ich mir, das es das ist.
Du wirst lachen, aber der phpMyAdmin läuft mit UTF-8^^ ... zu ministens glaube ich das das die Standarteinstellung ist.
Denke mal du wirst da die "mysql.ini" bemühen müssen.
Hallo
Wenn ich character_set_results von latin1 auf utf8 stelle klappts ja, aber kann ich das ganze mit phpmyadmin auch irgendwie generell auf uft8 stellen? sonst muss ich ja jedes mal den beim connecten den befehl losschicken.
Du wirst lachen, aber der phpMyAdmin läuft mit UTF-8^^ ... zu ministens glaube ich das das die Standarteinstellung ist.
Was bei phpMyAdmin eingestellt ist, interessiert aber ein anderes Skript, mit seinen eigenen Verbindungen zum DB-Server, nicht.
Denke mal du wirst da die "mysql.ini" bemühen müssen.
Jein, auf dem eigenen Server kann er machen, was geht. Auf einem Shared Hosting Angebot geht das typischerweise nicht. Dort muss er bei *jeder* Verbindungsaufnahme den Charset bestimmen. Dazu reicht dann, wie schon angemerkt, "SET NAMES utf-8"
aus. Bei den mysqli-Funktionen, so er sie benutzt, gibt es dazu auch eine Alternative, die das mit einer PHP-Funktion erledigt.
Tschö, Auge
Du wirst lachen, aber der phpMyAdmin läuft mit UTF-8^^ ... zu ministens glaube ich das das die Standarteinstellung ist.
Was bei phpMyAdmin eingestellt ist, interessiert aber ein anderes Skript, mit seinen eigenen Verbindungen zum DB-Server, nicht.
Genau das hab ich Versucht Ihm damit zu vermitteln.
Denke mal du wirst da die "mysql.ini" bemühen müssen.
Jein, auf dem eigenen Server kann er machen, was geht. Auf einem Shared Hosting Angebot geht das typischerweise nicht. Dort muss er bei *jeder* Verbindungsaufnahme den Charset bestimmen. Dazu reicht dann, wie schon angemerkt,"SET NAMES utf-8"
aus. Bei den mysqli-Funktionen, so er sie benutzt, gibt es dazu auch eine Alternative, die das mit einer PHP-Funktion erledigt.
Naja, wenn er es "Generell" ändern möchte, MUSS er die mysql.ini verändern, wenn er das nicht kann, kann er es auch nicht permanent ändern, darauf war meine Aussage bezogen.
Am einfachsten ist es dann natürlich die Verbindung an einer zentralen Stelle aufzubauen und dann entsprechend utf-8 einzustellen.
Was reicht und was nicht, damit hab ich leider nur wenig Erfahrungen, im allgemeinen läuft laufen auf unseren älteren Webservern (ohne php5, deshalb auch kein MySQLi) kaum seiten mit UTF-8, deshalb läuft der SQL Server auch ohne, jedoch bin ich damals bei einer Seite so verzweifelt, das ich schlicht und ergreifend alles umgestellt habe :).
Hi!
Was reicht und was nicht, damit hab ich leider nur wenig Erfahrungen, im allgemeinen läuft laufen auf unseren älteren Webservern (ohne php5, deshalb auch kein MySQLi) kaum seiten mit UTF-8, deshalb läuft der SQL Server auch ohne, jedoch bin ich damals bei einer Seite so verzweifelt, das ich schlicht und ergreifend alles umgestellt habe :).
PHP4 kann wie PHP5 problemlos auch mit der mysql-Extension UTF-8 mit dem MySQL-Server[*] sprechen. Wie immer müssen dazu zwei Dinge beachtet werden: die Verbindungskodierung und die Kodierung der einzelnen Felder.
Die Verbindungskodierung stellt man idealerweise mit mysql(i)_set_charset() ein (erhältlich ab 5.0.5 für mysqli und 5.2.3 für mysql). Ersatzweise kann man für die ISO-8859-Familie und UTF-8 auch ein SET NAMES-Statement abschicken.
[*] MySQL-Version 4.1 und größer vorausgesetzt. Bis Version 4.0 kann man zwar UTF-8-kodierte Daten speichern und abrufen, MySQL behandelt sie dann aber intern wie Latin1 (oder was grad als Default-Kodierung eingestellt ist).
Lo!
Hi!
mysql_query("SET NAMES 'utf8'", $sqlconnection);
mysql_query("set character_set_client=utf8;", $sqlconnection);
mysql_query("set character_set_connection=utf8;", $sqlconnection);
mysql_query("set character_set_results=utf8;", $sqlconnection);
mysql_query("set character_set_server=utf8;", $sqlconnection);
mysql_query("set collation_connection=utf8_general_ci;", $sqlconnection);
mysql_query("set collation_server=utf8_general_ci;", $sqlconnection);
Nicht übertreiben! Ein SET NAMES utf8 reicht völlig. (Die Anführungszeichen um utf8 können auch weg.)
Lo!
@@anna22:
nuqneH
also die Umlaute aus MySQL nach Abfrage durch ü ersetzt. Im Div klappts.
(1) Das heißt also, die Texte stehen richtig in der Datenbank drin und kommen auch richtig aus ihr heraus?
(2) 'ü' sollte nicht durch 'ü
' ersetzt werden. Es ist dafür zu sorgen, dass der Server die richtige Zeichencodierung angibt.
Qapla'