Sonderzeichen Darstellung mit "node_load"
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 17.02.2008 - 14:25 Uhr in
Aktuell versuche ich mich intensiv mit dem Modul Services auseinanderzusetzen, was auch im Grunde sehr gut läuft. Allerdings gibt es da ein Problem mit den Umlauten. Das ganze zeigt sich wie folgt.
Zum testen habe ich folgenden Service "news_service.module" geschrieben:
function news_service_service() {
return array(
array(
'#method' => 'news.all',
'#callback' => 'news_service_all',
'#help' => 'Returns list of News'
)
);
}
function news_service_all() {
return 'Drüber ist es gut';
}
Wenn ich diesen Service nutze und mir mit Hilfe eine Flash Remoting Objekts in eine entsprechende Applikation lade, wird der Umlaut auch korrekt dargestellt. Danach habe ich es mit einem Node Aufruf versucht, der wie folgt ausschaut:
function news_service_service() {
return array(
array(
'#method' => 'news.all',
'#callback' => 'news_service_all',
'#return' => 'array',
'#help' => 'Returns list of News'
)
);
}
function news_service_all() {
$result = db_query("SELECT nid FROM {node} WHERE type='news'");
$nodes = array();
while($node = db_fetch_object($result)) {
$nodes[] = node_load($node);
}
return $nodes;
}
Rufe ich diesen Service in Drupal auf, wird mir die Liste der Nodes perfekt ausgegeben. Tu ich das in meiner Flash Anwendung, werden Umlaute nicht mehr korrekt dargestellt.
Da es im ersten Versuch aber funktioniert hat, vermute ich, dass der Fehler irgendwo in der Drupal Funtkion node_load stecken muss. Ich bin da langsam mit meinem Latein am Ende. Hat jemand eine Idee was ich noch machen kann?
- Anmelden oder Registrieren um Kommentare zu schreiben
node_load() macht keine
am 17.02.2008 - 16:53 Uhr
node_load() macht keine Probleme mit Umlauten, weil node_load() ein Node-Objekt aus der Datenbank zurückliefert. Dies muss dann noch serialisiert werden. Die Frage ist auch, ob es Sinn macht ein komplett gebootstrapptes Node-Objekt durch den Äther zu schicken.
Kurzer Blick in die Doku liefert folgendes Codebeispiel ( http://drupal.org/node/118126 ):
<?php
function recipe_service_all($fields = array()) {
$result = db_query("SELECT nid FROM {node} WHERE type='recipe'");
$nodes = array();
while ($node = db_fetch_object($result)) {
// services_node_load filters a node and returns only the requested fields.
$nodes[] = services_node_load(node_load($node), $fields);
}
// return the array result
return $nodes;
}
?>
Zu beachten ist der Aufruf von services_node_load(), durch den eingeschränkt werden kann welche Felder des Node-Objekts tatsächlich übernommen werden.
--
"Look, Ma, I'm dead!"
Cell, Stephen King
das ist mir klar, zum testen
am 17.02.2008 - 17:41 Uhr
das ist mir klar, zum testen war das aber völlig unerheblich! Es geht mir eben darum, dass die Umlaute nicht korrekt dargestellt werden. Ich hab das mal getestet, wenn ich das Ergebnis als echo rasu gebe. Sieht es in Drupal auch noch okay aus, setze ich aber die Zeichencodierung des Browsers auf ISO statt UTF8 hab ich den gleichen Fehler auch bei Drupal. Es muss doch aber eine Möglichkeit geben, dass auch außerhalb des Browser die Daten korrekt angezeigt werden.
so der Befehl der mir
am 17.02.2008 - 18:10 Uhr
so der Befehl der mir gefehlt hat lautet: utf8_decode(); wenn ich das Ergebnis damit formatiere und dann an meine Anwendung sende, funktioniert es! Endlich!