Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] json_encode liefert nicht wirklich schöne Umlaute

Einklappen

Neue Werbung 2019

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

  • [Erledigt] json_encode liefert nicht wirklich schöne Umlaute

    Ich möchte Daten aus einer Datenbank lesen und in einen json String abfüllen. Nachdem ich alles eingestellt habe, wie hier http://www.php.de/datenbanken/55699-...tml#post430223 beschrieben, kommen die Daten daher und werden korrekt gelesen, jedoch sehen die Umlaute im json String nicht sehr menschenfreundlich aus.

    Ich bin Euch dankbar um Hinweise.

    PHP-Code:
    <html>

    <title>PHP-Test</title>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
     </head>

     <body>
     <?php

     
    echo "<p> <b>Die Abfrage als Text</b> </p>";

       
    mysql_connect('localhost','','');
       
    mysql_select_db('');
       
    mysql_query("SET NAMES utf8");



     
    $sqle "SELECT `Lebensbereich`, `GewichtDesLebensbereichs` FROM `Lebensbereiche`" ;


    $result mysql_query($sqle) or die(mysql_error());


    while(
    $row mysql_fetch_array($result))
      {
      echo 
    $row['Lebensbereich'] . " " $row['GewichtDesLebensbereichs'];
      echo 
    "<br />";
      }

    $sql mysql_query($sqle);
    $results = array();

    while(
    $row mysql_fetch_array($sql))
    {
       
    $results[] = array(

          
    'Lebensbereich' => $row['Lebensbereich'],

          
    'GewichtDesLebensbereichs' =>   $row['GewichtDesLebensbereichs' ]
       );
    }


    $json json_encode($results);
    echo 
    "<br><b>Der json String:</b><br>";
    echo 
    $json;


     
    ?>

    </html>
    und die Tabelle:

    CREATE TABLE IF NOT EXISTS `lebensbereiche` (
    `Projekt_ID` int(11) NOT NULL,
    `Benutzer_ID` int(11) NOT NULL,
    `LB_ID` int(11) NOT NULL DEFAULT '0',
    `Lebensbereich` varchar(255) COLLATE utf8_bin DEFAULT NULL,
    `Erläuterung` varchar(255) COLLATE utf8_bin DEFAULT NULL,
    `GewichtDesLebensbereichs` double DEFAULT NULL,
    `gewichtet` varchar(255) COLLATE utf8_bin DEFAULT NULL,
    PRIMARY KEY (`Projekt_ID`,`Benutzer_ID`,`LB_ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

    INSERT INTO `lebensbereiche` (`Projekt_ID`, `Benutzer_ID`, `LB_ID`, `Lebensbereich`, `Erläuterung`, `GewichtDesLebensbereichs`, `gewichtet`) VALUES
    (1, 1, 1, 'Körper', 'Mensch, materiell', 2.5, 'ja'),
    (1, 1, 2, 'Geist & Psyche', 'Mensch, immateriell', 2.5, 'ja'),
    (1, 1, 3, 'Sozial & Gesellschaft', 'Umwelt, immateriell', 2.5, 'ja'),
    (1, 1, 4, 'Raum & Ökonomie & Ökologie', 'Umwelt, materiell', 2.5, 'ja');

  • #2
    dein meta-tag wird vom browser ignoriert, mangels Eröffnenden <head>-tag.

    Kommentar


    • #3
      Danke. Das habe ich jetzt korrigiert.
      Die Umlaute werden immer noch als \u00f6 oder so angezeigt.

      Kommentar


      • #4
        Und was stört dich daran solang sie beim Empfänger wieder korrekt interpretiert werden?

        Kommentar


        • #5
          PHP-Code:
          mysql_query("SET NAMES utf8"); 
          ist das richtig? kommt mir komisch vor

          Kommentar


          • #6
            Zitat von lilalaser Beitrag anzeigen
            Danke. Das habe ich jetzt korrigiert.
            Die Umlaute werden immer noch als \u00f6 oder so angezeigt.
            Prinzipiell:

            Encode : | UTF-8 String | -- > | JSON String |

            Decode : | JSON String | -- > | UTF-8 String |


            Aus Sprachen-Sicht:

            PHP : | UTF-8 String ( outbound data ) | --> | JSON String |

            Java : | JSON String ( inbound data ) | --> | UTF-8 String |

            Wie der String aussieht wenn er zu einem JSON-String encoded wurde sollte dich nicht interessieren solang der UTF-8 String der "versendet" wird auch wieder zum selben UTF-8 String wird wenn er decoded wird.

            Encodieren bedeutet nichts anderes als einen Wert in einer anderen Form zu repräsentieren. Decodieren bringt den anders repräsentierten Wert wieder in seine Urform zurück.

            Kommentar


            • #7
              Danke für Eure Hilfe
              Ja, ich hätte nur den String weiterverwenden müssen, bevor ich mich wundere. Letztlich ist jetzt alles korrekt auf dem Bildschirm.

              Kommentar

              Lädt...
              X