Elliptische Gedankenstriche

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Original von Tom9811
    Jetzt wird es richtig geil:
    Wenn ich im HTML als Charset iso-8859-1 angebe, und *kein* utf8_encode verwende, kommt es richtig an.

    Das deutet IMHO darauf hin, dass irgendwo in Deinem Datenfluss entweder ›heimlich‹ konvertiert wird oder dass die Daten nicht in dem Charset vorliegen, das Du erwartest. Die Kette, die Du vor Dir hast (MySQL-Server, MySQL-Client, HTTP, HTML) bietet reichlich Fallstricke, und da Du Dir die Daten offenbar in phpMyAdmin anschaust, lauern hier auch nochmal ähnlich Fettnäpfchen. Hast Du schonmal an der Shell (mit UTF-8-Charset) die Daten direkt mit dem mysql-Shell-Client anzeigen lassen?

    Ciao,
    Carsten
  • Original von Tom9811
    Jetzt wird es richtig geil:
    Wenn ich im HTML als Charset iso-8859-1 angebe, und *kein* utf8_encode verwende, kommt es richtig an.

    WTF?


    Zumindest sehe ich jetzt gar nicht mehr durch. ;)
    Wenn deine Datenbank UTF-8 sichert, dann musst du die doch eigentlich nicht noch einmal in UTF-8 umwandeln.
    utf8_encode weglassen und das HTML als UTF-8 darstellen, siehst du die Ellipsen dann?
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Also, es liegt wohl daran, dass zwar in UTF-8 gesichert wird, aber die Verbindung zur Datenbank kein UTF-8 ist. Daher kommt das nicht durch die Leitung. Wenn ich den Verbindungscharset abfrage, erhalte ich latin1. Dieses Experimente

    Quellcode

    1. $charset = mysql_client_encoding();
    2. echo "Charset: " . $charset . "<p/>";
    3. mysql_set_charset( "utf8" );
    4. $charset = mysql_client_encoding($link);
    5. echo "Charset: " . $charset . "<p/>";

    quittiert er mit
    Charset: latin1


    Warning: mysql_client_encoding() expects parameter 1 to be resource, null given in /homepages/44/d199407414/htdocs/cocoading/Common/Content/List.php on line 143
    Charset:
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • ich verwende meist sowas:

    Quellcode

    1. function ResultForSQLQuery($mySqlQuery)
    2. {
    3. $link = mysql_connect("localhost", "root", "root") or die("ERROR (mysql_connect): " . mysql_error());
    4. mysql_select_db("dbname") or die("ERROR (mysql_select_db): " . mysql_error());
    5. mysql_query("SET CHARACTER SET 'utf8'", $link) or die("ERROR (mysql_query): " . mysql_error() . ": $mySqlQuery");
    6. mysql_query("SET NAMES 'utf8'", $link) or die("ERROR (mysql_query): " . mysql_error() . ": $mySqlQuery");
    7. $result = mysql_query($mySqlQuery) or die("ERROR (mysql_query): " . mysql_error() . ": $mySqlQuery");
    8. mysql_close($link);
    9. return $result;
    10. }
    Alles anzeigen
  • Die neue Version

    Quellcode

    1. $charset = mysql_client_encoding();
    2. echo "Charset: " . $charset . "<p/>";
    3. mysql_set_charset( "'utf8'" );
    4. $charset = mysql_client_encoding();

    ist ziemlich hartnäckig:
    Charset: latin1
    Charset: latin1
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Tom9811
    Also, es liegt wohl daran, dass zwar in UTF-8 gesichert wird, aber die Verbindung zur Datenbank kein UTF-8 ist.

    Genau dafür setzt man zu Beginn das SET NAMES 'utf8' ab – SET NAMES x ist äquivalent zu:
    SET character_set_client = x;
    SET character_set_results = x;
    SET character_set_connection = x;

    Ciao
    Carsten
  • Hilft leider nicht:

    Quellcode

    1. function connectToDatabase() {
    2. $server = MYSQL_PCONNECT( … );
    3. MYSQL_SELECT_DB( "…" );
    4. MYSQL_QUERY( "SET CHARACTER SET 'utf8'" );
    5. MYSQL_QUERY( "SET NAMES 'utf8'" );
    6. $charset = mysql_client_encoding();
    7. echo "Charset: " . $charset . "<p/>";
    8. mysql_set_charset( "'utf8'" );
    9. $charset = mysql_client_encoding();
    10. echo "Charset: " . $charset . "<p/>";
    11. }
    Alles anzeigen

    liefert zweimal latin1.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Tom9811
    Hilft leider nicht:

    Quellcode

    1. function connectToDatabase() {
    2. $server = MYSQL_PCONNECT( … );
    3. MYSQL_SELECT_DB( "…" );
    4. MYSQL_QUERY( "SET CHARACTER SET 'utf8'" );
    5. MYSQL_QUERY( "SET NAMES 'utf8'" );
    6. $charset = mysql_client_encoding();
    7. echo "Charset: " . $charset . "<p/>";
    8. mysql_set_charset( "'utf8'" );
    9. $charset = mysql_client_encoding();
    10. echo "Charset: " . $charset . "<p/>";
    11. }
    Alles anzeigen

    liefert zweimal latin1.


    ja ich weis - aber die daten kommen als utf8 ;) (zumindest bei mir).
  • Original von Nasir
    Original von Tom9811
    Also, es liegt wohl daran, dass zwar in UTF-8 gesichert wird, aber die Verbindung zur Datenbank kein UTF-8 ist.

    Genau dafür setzt man zu Beginn das SET NAMES 'utf8' ab – SET NAMES x ist äquivalent zu:
    SET character_set_client = x;
    SET character_set_results = x;
    SET character_set_connection = x;

    Ciao
    Carsten

    Was nur nicht funktioniert …

    Irgendwelche Servereinstellungen, an denen ich noch rumspielen könnte?
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von gritsch
    Original von Tom9811
    Original von gritsch
    Original von Tom9811
    Bei mir leider nicht … *DRECK*


    hast du die daten auch mit genau den queries reingespeichert?


    Ich speichere sie mit MySQL Admin.


    dann machs mal mit der funktion.
    traue nie einem webinterfache ;)
    ...oder eigentlich: "traue niemandem außer dir selbst" ;)

    Siehe oben. Das funktionierte ja auch nicht richtig. Aber gut, ich mache es jetzt noch einmal mit diesen Einstellungen. Einfach ein "…Ä…".

    +++

    KEWL das funktioniert jetzt.

    +++

    In MySQL Admin erscheint dafür nur Dreck.


    D*A*N*K*E
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Tom9811
    Irgendwas läuft hier grundsätzlich falsch. Bald wandele ich alles in HTML-Entities um, dann kann mir das am Arsch vorbei.

    Würde ich Dir auf jeden Fall empfehlen, damit Du nicht die Probleme bekommst die Du schon hast ;)
  • Original von wolf_10de
    Original von Tom9811
    Irgendwas läuft hier grundsätzlich falsch. Bald wandele ich alles in HTML-Entities um, dann kann mir das am Arsch vorbei.

    Würde ich Dir auf jeden Fall empfehlen, damit Du nicht die Probleme bekommst die Du schon hast ;)

    Die Idee war ja, dass ich es auch notfalls in MySQL Admin bearbeiten kann. Offenbar ist es aber wirklich so, dass MySQL Admin die Daten immer als iso-8859-1 ausgibt, was natürlich bei zutreffendem UTF-8 falsch aussieht. Ich hatte es mutmaßlich von Anfang an richtig und mich fälschlicherweise auf MySQL Admin verlassen.

    Da wären Entities schon besser. Andererseits sträuben sich mir da alle Haare. Wir schreiben das Jahr 2008 …
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Tom9811
    Die Idee war ja, dass ich es auch notfalls in MySQL Admin bearbeiten kann. Offenbar ist es aber wirklich so, dass MySQL Admin die Daten immer als iso-8859-1 ausgibt, was natürlich bei zutreffendem UTF-8 falsch aussieht. Ich hatte es mutmaßlich von Anfang an richtig und mich fälschlicherweise auf MySQL Admin verlassen.

    Ich schätze, mit »MySQL Admin« meinst Du phpMyAdmin. Normalerweise ist pMA in Charset-Fragen ziemlich zuverlässig – aber es kann natürlich sein, dass Du eine steinalte Version benutzt bzw. vom Hoster eine steinalte Version vorgesetzt bekommst.

    Ciao
    Carsten
  • Äh, ja, meine ich. Na ja, wenn ich es unverändert reinschreibe und unverändert auslese, bekomme ich auf einer UTF-8-Seite die richtigen Zeichen.

    phpMyAdmin verwendet dagegen iso-8859-1 und zeigt es dann anders an. Ich könnte mir esnatürlich noch binär anschauen. Wenn ich Zeit habe …
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?