You are not logged in.

  • Login

1

Saturday, October 16th 2010, 7:59pm

Umlaute in der Ausgabe eines PHP Scripts anzeigen

Hey, ich habe mir folgende RSS Ausgabe Script zusammengebastelt:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?
$quelle = @file('url.rss'); 
$data = implode ("", $quelle);

if(isUTF8($data)) $utf8 = 1;
else $utf8 = 0;

preg_match_all("|<item>(.*)</item>|Uism",$data, $items, PREG_PATTERN_ORDER);
    if (count($items[1])==0) {
    preg_match_all("|<item .*>(.*)</item>|Uism",$data, $items, PREG_PATTERN_ORDER);
    }
    for ($i=0; $i<count($items[1]); $i++) {
    preg_match_all("|<title>(.*)</title>(.*)<link>(.*)</link>|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER);

if($utf8 == 1) $title = utf8_decode($regs[1][0]);
        else $title = $regs[1][0];
    echo "<div id=\"item\"><a href=\"".$regs[3][0]."\" target=\"_blank\">".$title."</a></div>\n";
    }

   function isUTF8($str) {
       if ($str === mb_convert_encoding(mb_convert_encoding($str, "UTF-32", "UTF-8"), "UTF-8", "UTF-32")) {
           return true;
       } else {
           return false;
       }
   } 
?>


Aber es werden keine Umlaut wie Ö, Ä, Ü angezeigt, dafür erscheinen Fragezeichen.

Was muss ich am Script ändern, damit alles richtig angezeigt wird, auch die Umlaute?

Grüße

2

Sunday, October 17th 2010, 12:05am

Weiß niemand weiter? :-/

3

Sunday, October 17th 2010, 10:31am

Du wirst einfach nur ein Problem mit dem Zeichensatz haben. Gib mal doch bitte die richtige URL zum dem RSS Feed. Danke.

4

Sunday, October 17th 2010, 12:55pm

Du wirst einfach nur ein Problem mit dem Zeichensatz haben. Gib mal doch bitte die richtige URL zum dem RSS Feed. Danke.

Hier der RSS-Feed Link :-)
http://www.xsider.de/?feed=rss2

5

Sunday, October 17th 2010, 1:05pm

Funktioniert bei mir ohne Probleme. Könnte eventuell Probleme mit der Apache Konfiguration geben.

6

Sunday, October 17th 2010, 1:11pm

Funktioniert bei mir ohne Probleme. Könnte eventuell Probleme mit der Apache Konfiguration geben.

Nein, also wenn ich den RSS Feed via den PHP Script (Siehe ersten Post) ausgebe werden keine Umlaute in der Ausgabe angezeigt ;-)

7

Sunday, October 17th 2010, 2:26pm

Ich hab dein Script einfach 1:1 kopiert und bei mir auf dem localhost ausgeführt und da funktioniert es ohne Probleme. Es kann gut sein, dass dein Apache z.B. so konfiguriert ist, dass er alles als utf8 ausgeben will und deine Ausgabe ist nicht in utf8

8

Sunday, October 17th 2010, 10:56pm

Ich hab dein Script einfach 1:1 kopiert und bei mir auf dem localhost ausgeführt und da funktioniert es ohne Probleme. Es kann gut sein, dass dein Apache z.B. so konfiguriert ist, dass er alles als utf8 ausgeben will und deine Ausgabe ist nicht in utf8

Gut, danke - Jetzt kommt natürlich die Masterfrage :-P - Wie ändern? ;-)

9

Monday, October 18th 2010, 4:59pm

Also einen utf-8 header kannst du zu Beispiel so senden (Content-Type ist noch anzupassen)

PHP Quellcode

1
header('Content-Type: application/json; charset=utf8');


Ansonsten sieht deine isUTF8 Funktion ziemlich fehleranfällig aus.. schau mal im Wiki was ich immer benutze: UTF-8 Kodierung sicherstellen
Deine bisherige Erkenntnis sollte auf jeden Fall sein.. die falsche Ausgabe liegt am falschen Input (kein utf8).
Nun ist es die Aufgabe den falschen Input ins richtige Format (utf) zu überführen.

10

Monday, October 18th 2010, 5:59pm

Also einen utf-8 header kannst du zu Beispiel so senden (Content-Type ist noch anzupassen)

PHP Quellcode

1
header('Content-Type: application/json; charset=utf8');


Ansonsten sieht deine isUTF8 Funktion ziemlich fehleranfällig aus.. schau mal im Wiki was ich immer benutze: UTF-8 Kodierung sicherstellen
Deine bisherige Erkenntnis sollte auf jeden Fall sein.. die falsche Ausgabe liegt am falschen Input (kein utf8).
Nun ist es die Aufgabe den falschen Input ins richtige Format (utf) zu überführen.

Ahh :) Okay, danke!

Similar threads

Social bookmarks